sharpc (sharpc) wrote,
sharpc
sharpc

Category:
  • Music:

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

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

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

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

МинимумCollapse )


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

Часто отвечаемые ответыCollapse )

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

Некоторые полезные ссылки:
Книги, которые стоит читать в 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
Tags: программирование
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 645 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
User staerum referenced to your post from No title saying: [...] Теоретический минимум для программиста [...]
Не сказал бы, что это _теоретический_ минимум.

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

Re: No title

udpn

8 years ago

jtootf

8 years ago

udpn

8 years ago

jtootf

8 years ago

sharpc

8 years ago

Re: No title

ulysses4ever

8 years ago

Re: No title

udpn

8 years ago

Deleted comment

Re: No title

udpn

8 years ago

Anonymous

March 24 2011, 22:25:53 UTC 8 years ago

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

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

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

Anonymous

8 years ago

sharpc

8 years ago

Anonymous

8 years ago

sharpc

8 years ago

dfyz

8 years ago

sharpc

8 years ago

shmel39

8 years ago

viktorpetrov

1 year ago

sharpc

1 year ago

>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 Еще не лишне помнить про выравнивание -- к тем кто не выравнивает -- автобус приезжает.

sharpc

8 years ago

soonts

8 years ago

sharpc

8 years ago

soonts

8 years ago

sharpc

8 years ago

soonts

8 years ago

sharpc

8 years ago

theiced

8 years ago

soonts

8 years ago

sharpc

8 years ago

dfyz

8 years ago

ulysses4ever

8 years ago

sharpc

8 years ago

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

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

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

love5an

8 years ago

sharpc

8 years ago

love5an

8 years ago

sharpc

8 years ago

Anonymous

8 years ago

sharpc

8 years ago

alexott

8 years ago

udpn

8 years ago

love5an

8 years ago

udpn

8 years ago

love5an

8 years ago

udpn

8 years ago

Deleted comment

udpn

8 years ago

thesz

8 years ago

udpn

8 years ago

thesz

8 years ago

Anonymous

8 years ago

thesz

8 years ago

Anonymous

8 years ago

udpn

8 years ago

Anonymous

8 years ago

udpn

8 years ago

Anonymous

8 years ago

udpn

8 years ago

Anonymous

8 years ago

udpn

8 years ago

udpn

8 years ago

thesz

8 years ago

udpn

8 years ago

Anonymous

8 years ago

udpn

8 years ago

Anonymous

8 years ago

udpn

8 years ago

Anonymous

8 years ago

udpn

8 years ago

thesz

8 years ago

Deleted comment

thesz

8 years ago

Anonymous

8 years ago

thesz

8 years ago

Anonymous

8 years ago

Anonymous

8 years ago

thesz

8 years ago

Anonymous

8 years ago

thesz

8 years ago

Anonymous

8 years ago

jtootf

8 years ago

udpn

8 years ago

jtootf

8 years ago

sharpc

8 years ago

jtootf

8 years ago

jtootf

8 years ago

sharpc

8 years ago

jtootf

8 years ago

sharpc

8 years ago

jtootf

8 years ago

sharpc

8 years ago

jtootf

8 years ago

sharpc

8 years ago

antilamer

8 years ago

sharpc

8 years ago

antilamer

8 years ago

sharpc

8 years ago

antilamer

8 years ago

sharpc

8 years ago

antilamer

8 years ago

User sbj_ss referenced to your post from Не могу удержаться от копипаста saying: [...] Что должен знать программист, чтобы не устареть [...]
User 3000top referenced to your post from Взлом чарта 25.03.11 06:05 saying: [...] с записью «Теоретический минимум для программиста» [...]
User schegloff referenced to your post from Есть среди вас хотя бы один, кому место не на Помойке, где Бомжи (с)? saying: [...] льных университетов, на основании собеседований и постоянно пригождающихся на практике знаний. [...]
Респект за пункт 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 [...]
А пунктом номер ноль я бы поставил умение мыслить системно и понимание цель изучения перечисленного в списке. Только его весьма немногим можно осилить - даже автор поста строит классификацию по Борхесу.
Здесь слишком большой объем материала, чтобы сразу расписать его на отдельные термины и топологически отсортировать. Основной целью, если я правильно понимаю, было получить отклик по поводу пропущенных глав и терминов.

sharpc

8 years ago

Ой, мальчики, вы такие сложные...
Лучший язык тот, программированием на котором за 8 часов рабочего времени можно заработать больше денег и который может принести деньги и вне основного рабочего времени.
Точно, где ABAP и COBOL? :)

saplady

8 years ago

Про скрипку забыли. Надо ещё на скрипке уметь играть, и вышивать крестиком и гладью ;)

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

thedeemon

8 years ago

blueher

8 years ago

thedeemon

8 years ago

udpn

8 years ago

Previous
← Ctrl ← Alt
Next
Ctrl → Alt →