Apepe
03.03.2013 22:47 2EDE0A63
Решился все же в своем ебанутом графике искать время для изучения программирования. В общем котоны, как не звучало бы это печально, но я нихуя не шарю. Скажите, какой язык более менее простой в изучении? Какие подводные камни?
рецоменд плиз
bash
Ты серьезно? И что на нем можно делать?
> простой
hq9+
на самом деле очень много что, офк если учитывать его в связки с корутилзами и прочими популярными тулзами
Под изучением программирования ты имеешь в виду изучение синтаксиса определённого отдельно взятого яп?(Тогда самый простой это brainfuck, команд в 2 раза больше чем у hq9+, зато Тьюринговская полнота присутствует, это полноценный язык, бро ;-) )
А серьёзно, если собираешься изучать программирование с нуля, начиная со структур данных там, алгоритмов поиска, сортировки и т.д. то не особо критичен язык, имхо. Так что любой высокоуровневый язык подойдёт, Си например. Если собираешься сразу начать с ООП, то любой объектно-ориентированный(С++, C#, Java, Objective-C, JavaScript и т.д.)
P H P
ОРТ
тоже вариант)))
на самом деле говно
Если положим Apepe собирается изучать веб-программирование(а он не уточнял),то PHP почему говно?
потому что немодно, немолодежно, да и вообще ФРАКТАЛ ОТСОСА
А как же Википедиа и Мордокнига? Кто решил что немодно?
что википедиа и мордокнига? Создатели сабжей будто бы выбрали пыху из-за преимуществ языка.
Топ ХН и реддита решили, что немодно
Из-за чего они его выбрали, кстати, по твоему мнению(не собираюсь спорить, интересно просто)?
Имхо, фтопку преимущества языка. Для того, чтобы заиметь понятие о переменных, циклах, структурах данных, элементарных алгоритмах и т.д. можно начать изучать программирование на псевдоязыке хоть, и просто и понятно =D Правда, для практики не cойдёт...
Если бы я была Apepe я бы выбрала Java =З Просто потомушта мур-мурь...
>Из-за чего они его выбрали
было, много раз уже
а никто и не советует ему ничего(вообще) сложного, но и говно(пхп) тоже не надо, чтобы best practices все дела
Я написала, что php не говно, исходя из того, что он не особо труден и пхпшники требуются сейчас во всякие там датаарты, и прочие аутсорсинговые конторки... То есть есть куда устроиться потом практикантом и впоследствии в штат.
Посоветуй от себя, что для изучения веб-программирования при программировании с нуля неговно?
зачем ограничиваться веб-программированием?
> Я написала, что php не говно, исходя из того, что он не особо труден и пхпшники требуются сейчас во всякие там датаарты, и прочие аутсорсинговые конторки... То есть есть куда устроиться потом практикантом и впоследствии в штат.
казалось бы при чём тут вообще ЯЗЫК и ПРОГРАММИРОВАНИЕ
Я против того, чтобы с самого начала ограничиваться веб-программированием
Сама уже запуталась))) =P
Однако,ты увильнул от ответа во второй раз. Расстраиваешь тян =( Пойду грустить
Упс, это было тебе, 238328
сорь((( давай полижу? (:
ответы на предыдущие вопросы очевидны, решение проблем ОПа тоже очевидно, если бы он написал в /0 свои проблемы/желания/требования/что-либо, а не какое-то говно
Отнюдь, не хочу становится вебмакакой
>сорь((( давай полижу? (:
Наверное ты уверен, что я откажусь. Бесит когда что-то предалагают, с надеждой на отказ. Пиши в приват, сколько лет, чем занимаешься, фото, там, всё такое... Меня возбуждают умные гентушники, программеры и сетевые инженеры. Может, не всё для тебя ещё потеряно?
>ответы на предыдущие вопросы очевидны, решение проблем ОПа тоже очевидно, если бы он написал в /0 свои проблемы/желания/требования/что-либо, а не какое-то говно
+1. Все начинают с этого... «Я хочу изучить 3D!» «Я хочу стать программистом!» «Я хочу ...» ОП наверное сам ещё не знает, что хочет, в каком стиле, под какую платформу, для чего вообще.
Спасибо тебе, милый человек за добрые слова. На выходных определюсь окончательно, но мой взор почему-то постоянно падает на Си
зачем тебе Си? Чего хочешь добиться в результате изучения? Какие схожие альтернативы рассматривал?
Да я сам не знаю зачем, просто мне кажется, что он близко к пинусу. Схожие альтернытивы это плюсцы и Си шарп
>Меня возбуждают умные гентушники, программеры, сетевые инженеры и тупые геи
nope, nope, nope, check,
скинь скайп в личку, полижу прямо тама
>ОП наверное сам ещё не знает, что хочет
как будто от его желаний многое зависит
ну ок, теперь ты программист!
лол, даже не смешно. Не программист, потому что программисты это творцы! Они делают фактически из нехуя диковенные вещи, они могут то, что не каждому даже дано понять
http://habrahabr.ru/post/142140/ уже наконец
зачем перевод?
чтоб гарантированно
зато теперь у нас есть жс
Могу посоветовать доступный учебник для начинающих по Си(Кернигана и Ричи все советуют т.к. Ричи- автор языка, но я сию книгу не читала, ничего сказать не могу... Но по логике от автора языка — это лучшее). Подбельский, Фомин авторы. Есть ещё у Подбельского — практикум по Си. Если в Воронеж заедешь за ними, могу подарить... Кстати, Objective-C тоже сейчас моден, для проганья под всякие там iштучки =)
PS кто такое пинус? Я надеюсь,это не линукс так теперь обзывают???! =-О
А почему надеешься что это не он?
Потому что с 9 класса испытываю нежные чувства к линуксу. А пинус, это, простите... искаверканное слово хуй.
> K&R
только блядь, ради всего святого, не берите ПЕРВОЕ ИЗДАНИЕ
Ладно, буду называть вещи своими именами. Да, линукс.
Кстати, откуда любовь к этой ос?
короче оп, палю уберсовет: ищешь любой крупные айти-парашник в сети, луркаешь там самый большой дискач про холивор какой язык лучше, зубришь от корки до корки, похуй если чего не поймёшь, после прочтения будешь экспертом, шарить и пояснять своим шершавым по губам всяким ньюфагам про преимущества различных подходов к типизации и про то, какая система описания синтаксиса полущ, ну и мемчики, лайкеслипрограммист, вседела
Из-за игры червячка в Ubuntu 6 LTS. Серьёзно.
это была первая LTS убунты?
пруф или крудошлёпают
А, ещё звук там был прикольный при загрузке. Тун-тун-тун-тун-тун-тун-тун-тун-тууунс. Вот и из-за этого =D
Оh you~~
а ты на чем-нибудь верстаешь код?
на коленке, обв
почему?
Просто душа не лежит
ппц ты хам
лол, почему?
>это была первая LTS убунты?
Первая не виндовс ось на моём компе это была
>а ты на чем-нибудь верстаешь код?
курсяк на scala... Надо... Делать... Б**... Настроение всё попортил =(( Пойду ботанить
> scala
not bad! // лизнул
http://n-1.psto.net/tizfsh#18 http://n-1.psto.net/titzsi неправильно лижешь
там еще треды были, удалены выходит
ппц. Чувствую себя мудаком. Ох.. надеюсь мы еще с тобой пересичемся
зачем чувствовать себя мудаком, если можно просто быть правым? Или ты гуманитарий ине можешь в логику?
По логике я не прав
теперь ты можешь стать тян дедфуда
лул, и долбить его пердячело?
у него спроси
он подумает что я гей
на самом деле нет
питон //лисп ///лого
this
Начинай с дискретной математики. Во-первых, она действительно используется на практике (практически всё, здесь перечисленное http://ru.wikipedia.org/wiki/Дискретная_... в той или иной мере используется при составлении алгоритмов), во-вторых, это подготовит тебя к изучению любых теорий, оперирующих значками. Можешь взять что-то ориентированное на программистов, например, книжка совсем для чайников так и называется: Дискретная математика для программистов. Еще тебе понадобится что-то по алгоритмам, например Алгоритмы: построение и анализ Кормена. Если это слишком сложно, еще один автор, который популярно пишет для самых маленьких — это Вирт — Алгоритмы и структуры данных. Дальше язык программирования. В случае книжки Вирта это будет Паскаль, которому ты и научишься по ходу чтения.
После того, как ты научишься писать алгоритмы и начнёшь самостоятельно ориентироваться в индустрии (т.е. сможешь понять любую задачу, найти и разобраться в любом нужном тебе алгоритме, изучить и начать использовать любую библиотеку или фреймворк, выбрать прочитать специализированную книжку) можно переходить к осуществлению твоей ебанутой мечты. Для этого тебе понадобится изучить хороший язык программирования. Хороший в том плане, что находясь в тусовке, ты всегда сможешь развиваться и изучать что-то новое, как фундаментальных, так и в прикладных направлениях. Сейчас таким языком является Haskell. Изучая его ты естественным образом придёшь к изучению теории типов, углублению своих знаний во многих разделах абстрактной алгебры, мат. логики, теории категорий, а также в области дизайна программ и языков программирования. Впрочем, как я уже писал, изучение его требует самостоятельности, а следствием самостоятельности будет то, что ты сам выберешь себе специализацию. Например тот же теорвер, если он тебе нравится (мне, например, нет), тогда Haskell будет языком программирования для структуризации и записи алгоритмов, а теория категорий — инструментом, помогающим спроецировать знания предметной области на конструкции языка программирования.
Завтра ищешь в интернете книжку Categories for the Working Mathematician. Похуй если ничего не поймешь. Затем идешь на haskell.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь определения языка и стандартных библиотек — The Haskell 2010 Report, чтобы от зубов отскакивало. Когда напишешь свой первый катаморфизм, по пути изучив теорию типов на уровне TaPL-а, скачиваешь и изучаешь любую хаскеллевскую библиотеку с первоклассными функторами и морфизмами, рекомендую category-extras или recursion-schemes. Как переделаешь стандартную прелюдию, чтобы по крайней мере все рекурсивные схемы были выражены через комонады, можешь идти дальше — тебя ждет увлекательный мир теории категорий. Катаморфизмы, параморфизмы, зигоморфизмы, хистоморфизмы, препроморфизмы, анаморфизмы, апоморфизмы, футуморфизмы, постпроморфизмы, хиломорфизмы, крономорфизмы, синкрономорфизмы, экзоморфизмы, метаморфизмы, динаморфизмы алгебра и коалгебра Калвина Элгота наконец. Успех хиккующих выблядков / просто быдлокодеров типа рейфага или сисярп/джава-девелоперов, которые работают в Люксофте не будет тебя волновать и уже через пол года ты будешь получать такие гранты, что любой профессор будет теч при одном упоминании списка твоих публикаций.
Многие начинающие программисты, особенно обучающиеся в провинциальных вузах, часто не знают, в какую сторону им развиваться, и что они должны знать для того, чтобы эффективно работать по специальности. Удивительно, но каждый день используя продукты и технологии, созданные другими программистами на основании развитых областей знания, они даже не догадываются о том, как они устроены.
Построенные на теории массового обслуживания и протоколе GSM сети мобильной связи; PHP-скрипты, исполняющиеся на удаленных серверах и передающие свою выдачу через Ethernet по TCP/IP на компьютеры с NDIS-драйверами; процессоры, переупорядочивающие и спекулятивно исполняющие наборы инструкций для того, чтобы скомпенсировать вызванную ограничениями полупроводниковой электроники и скоростью света остановку роста тактовой частоты; рассчитанные на ЭВМ корпуса самолетов и автомобилей, лекарства и структуры ДНК; компьютерные игры, ради крохотного блика в которых пишутся мегабайты заполненных интегралами Френеля статей; электронные фильмы и книги; алгоритмы NLP и TreeNet, вызывающие нам из огромных баз данных поисковую выдачу — вот то, что окружает нас каждый день благодаря программистам, благодаря оригинальным подходам и фундаментальным знаниям, благодаря продуманной и отточенной десятилетиями методологии разработки и управления сложностью ПО.
Я и мои единомышленники взяли на себя труд составить теоретический минимум для программиста на основании наиболее ярких отраслей IT, вошедших даже в программы нормальных университетов, на основании собеседований и постоянно пригождающихся на практике знаний. Часть из пунктов этого минимума можно изучить за 5 минут по википедии, часть же потребует серьезного труда на протяжении нескольких месяцев, но это именно то, что обязательно следует знать и чем следует свободно владеть. В комментариях приветствуются исправления и дополнения.
C++, стандарт, Comeau, 1TBS, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII, правило трех, exception-safety, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Сик-Ламсдейн/Карлссон, TR1, TR on C++ performance, тест Степанова, forwarding problem, SPECS, C++0x
Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile
Мультитредность, обедающие философы, deadlock/race condition/starvation, атомарность, lock инструкции процессора, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads
Язык ассемблера x86, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг
Аппаратное обеспечение, Хоровиц-Хилл, полупроводниковая электроника/спинтроника/фотоника, транзистор, схемотехника, микрокод, технология создания процессоров, VID/PID, Verilog/VHDL/SystemC, Arduino, устройства памяти (ROM → EEPROM, RAM, SSD, HDD, DVD), RISC/CISC, Flynn's taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86
Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, branch predict, префетчинг, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, кольца защиты, память в мультипроцессорных системах, тайминг памяти
Дискретная математика, K2, теорема Поста, схемы, конечные автоматы, клеточные автоматы, автомат Калашникова, ДКА и НДКА
Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем
Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА → ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE/POSIX RE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL
Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Пре парата-Шеймос, структуры данных, алгоритмы, сложность и символы Ландау, классы сложности, NP-полные задачи, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), occlusion detection, куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика
Машинное обучение, машинное зрение, OpenCV, image processing, OCR, фильтры Собеля, каскад Хоара, введение в психофизиологию зрения, TreeNet, нейросети, сети Кохонена, генетические алгоритмы, муравьиные алгоритмы, information retrieval/data mining/natural language processing, алгоритмы оптимизации, SVM, gradient boosting, метод отжига, hill climbing, подходы к моделированию AI
Численные методы, метод Гаусса, интер- и экстраполяция, сплайны, МНК, метод Эйлера и Рунге-Кутты, дихотомия/метод Ньютона, метод Симпсона, метод Монте-Карло, метод Галеркина, QR и LU-декомпозиция, FFT/STFT, сходимость и устойчивость
Теория информации, сжатие, Хаффман, RLE, LZ, коды коррекции ошибок, информационная энтропия, формула Шеннона, сложность Колмогорова
Криптография, Ященко, симметричная, асимметричная, Диффи-Хеллман, RSA, DES, AES, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки, WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, HTTPS/SSL, доказательство с нулевым разглашением
Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)
Физика, правила Кирхгофа, комплексное сопротивление, скорость и частота света, лагранжиан
Химия, стехиометрия, химия кремния :)
Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер, защитное программирование, паттерны, GRASP, UML, OOP/OOD/OOA, правило Лисков, метрики кода
Методологии разработки, Waterfall/RUP/Agile/Scrum/Kanban/XP, TDD/BDD, CASE
Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI
Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), valgrind, системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ, профайлинг, lint, багтрекеры, документирование кода, сборщики кода типа cmake
Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre
Операционные системы, Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX
COM, OLE/ActiveX/COM+, ATL, Роджерсон/Таварес, апартменты, моникеры, дополнительные ключевые слова VC++, DCOM RPC, CORBA, TAO
Сеть, OSI, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/Avro/ASN.1, AMQP, ICMP, роутинг, ARP, атака Митника, syn flood, HTTP/FTP, P2P, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth, ACE, Wireshark
Графика, алгоритм Брезенхема, цветовые модели, трассировка лучей vs полигональная графика, OpenGL/GLSL/Open Inventor, DirectX/DirectShow/DirectAudio/HLSL, stencil/depth/alpha-test, графический конвейер в DirectX 11, шейдеры, модели освещения (Фонг), пропускная способность, fillrate, OpenCL/CUDA, ландшафты, лоды, тени, текстурирование и фильтрация, антиалиасинг, HDR, tone mapping
Форматы, XML/XSLT/XPath/XMLStarlet/DOM/SAX, RTF/ODF, JSON/BSON, torrent, YAML, JPEG/PNG/WebP, AVI/MPEG/RIFF/WAV/MP3/OGG/WebM, SVG, Unicode, кодировки однобайтные/UTF-8/UTF-16/UCS-2/UTF-32
Базы данных, Грубер, ANSI SQL, T-SQL, ODBC, MySQL/PostgreSQL/MS SQL/BDB/SQLite/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP
Прикладное программирование, C#/F#/Nemerle, Шилдт/Троелсен/Рихтер, генерики, yield, linq/plinq, рефлексия, AST, WCF, WinForms/WPF/Silverlight, AOP, фреймворки логгирования, .NET assembly
Квантовые вычисления, алгоритм Шора, квантовая криптография
Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), монады, тайпклассы, АТД, система типов Хиндли-Милнера, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)
Веб-программирование и скриптовые языки, Фланаган/Zend PHP5 Certification Course + Study Guide, Apache/nginx, CGI/FastCGI, PHP/Zend Framework/phpDaemon/Zend Engine/Doctrine или Propel/CodeIgniter или Symphony или Yii, Python/Django/Twisted, Ruby/RoR, ASP.NET MVC, JavaScript/jQuery/ExtJS/node.js, ООП в JavaScript, HTML5/XHTML/doctype/табличная и блочная верстка/CSS3, RSS, canvas/WebGL, Ajax/Comet/WebSockets, вопросы безопасности: XSS, SQL injection, CSRF, highload, SWIG
Проектирование GUI, Раскин, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX
На самом деле — конечно же, Haskell.
Пускай выбирает то, что лайкнет, но толькое не говно. От хаскелля ему никакого профита
Пойти в науку — это выбор настоящего мужика. Выбирай FORTRAN.
> выбор мужика
> в науку
> настоящий мужик
> учёный
вы меня испугали
прости, это была защитная реакция на кричащий когнитивный диссонанс
багор страхофила