?

Log in

No account? Create an account

Теоретический минимум для программиста

Многие начинающие программисты, особенно обучающиеся в провинциальных вузах, часто не знают, в какую сторону им развиваться, и что они должны знать для того, чтобы эффективно работать по специальности. Удивительно, но каждый день используя продукты и технологии, созданные другими программистами на основании развитых областей знания, они даже не догадываются о том, как они устроены.

Построенные на теории массового обслуживания и стандарте GSM сети мобильной связи; PHP-скрипты, исполняющиеся на удаленных серверах и передающие свою выдачу через Ethernet по TCP/IP на компьютеры с NDIS-драйверами; процессоры, переупорядочивающие и спекулятивно исполняющие наборы инструкций для того, чтобы скомпенсировать вызванную ограничениями полупроводниковой электроники и скоростью света остановку роста тактовой частоты; рассчитанные на ЭВМ корпуса самолетов и автомобилей, лекарства и структуры ДНК; компьютерные игры, ради крохотного блика в которых пишутся мегабайты заполненных интегралами Френеля статей; электронные фильмы и книги; алгоритмы NLP и TreeNet, вызывающие нам из огромных баз данных поисковую выдачу — вот то, что окружает нас каждый день благодаря программистам, благодаря оригинальным подходам и фундаментальным знаниям, благодаря продуманной и отточенной десятилетиями методологии разработки и управления сложностью ПО.

Я и мои единомышленники взяли на себя труд составить теоретический минимум для программиста на основании наиболее ярких отраслей IT, вошедших даже в программы нормальных университетов, на основании собеседований и постоянно пригождающихся на практике знаний. Часть из пунктов этого минимума можно изучить за 5 минут по википедии, часть же потребует серьезного труда на протяжении нескольких месяцев, но это именно то, что обязательно следует знать и чем следует свободно владеть. В комментариях приветствуются исправления и дополнения.

МинимумСвернуть )


UPD: Некоторые комментарии повторяются довольно часто, и разумно было бы попробовать ответить на них в апдейте поста.

Часто отвечаемые ответыСвернуть )

Кроме того, хочу поблагодарить тех, кто помогал исправлять досадные ошибки в этом теормине, особенно своих коллег, которые не только владеют его большей частью, но и внесли наиболее ценные замечания по его дополнению.

Некоторые полезные ссылки:
Книги, которые стоит читать в IT
Матрица Компетентности Программиста
Список Баткина
MIT OpenCourseWare
Курсы Интернет-университета


UPD2 (2011.07.04): Огромное спасибо Vissi за перевод статьи на английский язык.


UPD3 (2011.12.31):
Питер Норвиг. Научитесь программировать за десять лет
Matt Might. What every computer science major should know
От физики к программированию
Зачем нужно знать всякие низкоуровневые вещи

Ну и наконец, откуда вообще вырос этот теормин:
ACM Computer Science Curriculum

Last update: 2014/12/31

Comments

Страница 2 из 7
<<[1] [2] [3] [4] [5] [6] [7] >>

No title

User staerum referenced to your post from No title saying: [...] Теоретический минимум для программиста [...]

Re: No title

Не сказал бы, что это _теоретический_ минимум.

Ещё вот в ОС перечислены фамилии, а Таненбаума, например, нет — непонятно…

(Анонимно)

А в чем сакральная польза специальных областей математики, указанных в разделе Математика?

интересует, в частности "функан", "комплан", "дифгем", "интуры"?

Без функана и комплана можно даже не соваться в image processing или DSP. Дифуры и интуры незаменимы в теории оптимального управления. Диффгем крайне необходим для успешного прохождения собеседования в Яндексе :)
>sizeof на различных платформах
Нужно только мультиплатформенным

>обедающие философы
Подумал WTF? Погуглил, нагуглил т.н. "постановку задачи", без цели что-то максимизировать. WTF?

>Зубков/Хайд/Дреппер/Касперски/Фог/Абраш
Кто все эти люди?

>AT&T и Intel-синтаксис
Кому нужен AT&T?

>alphanumeric shellcode
Нанимаете людей для взлома пентагона что ль? Кому оно нужно кроме вирусописателей?

>спинтроника/фотоника
Пока на рынке нет устройств, никому на фиг не нужно про это знать.

>схемотехника
Программисту ни к чему.

>RISC
Подавляющее большинсово коллег программирует только CISC

>автомат Калашникова
WTF?

>Машинное обучение
>Численные методы
>Математика
>Физика
>Химия
Нужно только для работы в очень узких предметных областях.

>torrent
А он каким боком сюда?

>JPEG/PNG AVI/MPEG/RIFF/WAV/MP3/OGG/
Знание деталей реализации всего этого мне ещё ни разу в жизни не пригодилось.
Из форматов универсально-полезные только XML/XPath/DOM/SAX (заметь XSLT я из списка выкинул) и Unicode конечно.

>Квантовые вычисления, алгоритм Шора, квантовая криптография
Пока на рынке нет устройств, никому на фиг не нужно про это знать.
А кому нужен интел?
sizeof/byteorder -- знать что они есть, понимать как и когда употреблять. Люди которые будут собирать быдлокод для не-интела -- будут благодарны.

PS Еще не лишне помнить про выравнивание -- к тем кто не выравнивает -- автобус приезжает.
Очень, очень круто. Правда, видно, что автор(ы) изо всех сил старался/старались показать, что зна(е,ю)т много умных слов, и местами от этого содержание пострадало, но даже с учётом этого теорминимум удался на славу.
Спасибо :) Если где сильно пострадало, ты сообщи.
Куча баззвордов.

Ну об этом уже кто-нибудь написал, наверное выше.
Да все программирование такое, страшное, со словами непонятными.
Чорт, где мой Common Lisp?!
Не нашел.

наверное, недостаточно умное словосочетание :(
Он был удален из готовящегося списка после беседы с вами, потому что я получил еще одно подтверждение своей гипотезе, что знакомство с CL сильно понижает стремление к самообразованию. В общем-то, он и не нужен, его полностью перекрывает Mozart/Oz.

Не могу удержаться от копипаста

User sbj_ss referenced to your post from Не могу удержаться от копипаста saying: [...] Что должен знать программист, чтобы не устареть [...]

Взлом чарта 25.03.11 06:05

User 3000top referenced to your post from Взлом чарта 25.03.11 06:05 saying: [...] с записью «Теоретический минимум для программиста» [...]

Есть среди вас хотя бы один, кому место не на Помойке, г

User schegloff referenced to your post from Есть среди вас хотя бы один, кому место не на Помойке, где Бомжи (с)? saying: [...] льных университетов, на основании собеседований и постоянно пригождающихся на практике знаний. [...]

Re: Есть среди вас хотя бы один, кому место не на Помойке,

Респект за пункт 8 (вычислимость). Дисер был связан с этой темой...
Какой-то маразматический список местами - или это юмор такой? Например - если выучить "Verilog/VHDL/SystemC", но при этом не уметь пользоваться logic synthesis и static timing analysis, то пользы от этого будет примерно как от зубрежки японских ероглифов без знания правил грамматики японского языка. Т.е. "говорить" человек не сможет.

Околопрограммерское

User kmmbvnr referenced to your post from Околопрограммерское saying: [...] Любой список [...]

Теоретический минимум для программиста

User serg_markov referenced to your post from Теоретический минимум для программиста saying: [...] ует серьезного труда на протяжении нескольких месяцев, http://sharpc.livejournal.com/67583.html [...]
А пунктом номер ноль я бы поставил умение мыслить системно и понимание цель изучения перечисленного в списке. Только его весьма немногим можно осилить - даже автор поста строит классификацию по Борхесу.
Здесь слишком большой объем материала, чтобы сразу расписать его на отдельные термины и топологически отсортировать. Основной целью, если я правильно понимаю, было получить отклик по поводу пропущенных глав и терминов.
Ой, мальчики, вы такие сложные...
Лучший язык тот, программированием на котором за 8 часов рабочего времени можно заработать больше денег и который может принести деньги и вне основного рабочего времени.
Точно, где ABAP и COBOL? :)
Про скрипку забыли. Надо ещё на скрипке уметь играть, и вышивать крестиком и гладью ;)

Пробежал взглядом список, увидел COM Monikers. Ну на кой ляд они кому-то сдались, скажите мне, в 21-то веке? Идиотская переусложнённая технология созданная как "универсальное решение для проблем о существовании которых Вы не догадывались". Сколько не возился с COM (а возился я с ним с начала этого века) - ни разу не видел чтобы их использовали для каких-то вменяемых целей. На кой ляд забивать себе голову вот этой вот ерундой? Чтобы потом на собеседовании блестнуть?
Вы что? Автор их знает. Поэтому это важно. Это должен знать каждый. И дополнительные ключевые слова VC++ --- тоже.
Страница 2 из 7
<<[1] [2] [3] [4] [5] [6] [7] >>