?

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

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

No title

User isk referenced to your post from No title saying: [...] читая хабрахабр, я наткнулся на сначала обескураживающий Теоретический минимум для программиста [...]
Спасибо за полезный пост.

От себя добавлю, что на StackOverflow можно не только дополнять активность, но и самому многому научиться.

А список блогов для чтения не планируете составлять?
Боюсь, у меня по этой теме недостаточно материала.

No title

User ipcreeper referenced to your post from No title saying: [...] http://sharpc.livejournal.com/67583.html [...]
А разве Страуструп и стандарт не взаимозаменяемы?
Новый стандарт уже вышел, новый Страуструп вроде нет. Но не уверен.
0. Каменты не читал, много их тут, сорри.
1. Ширина контента в 500px и заявления про юзабилити - смех.
2. Ну, молодой человек, я просто процитирую анекдот.

Р)аботодатель
П)рограммер-соискатель

Р - В своем резюме вы написали, что знаете следующие языки и технологии программирования: Basic (TB, QB, VB, VBA, VB.NET) C (C and C++ for Unix, FreeBSD, QNX), C++, VC++, C++.NET, C#, в идеале знаете ассемблеры следующих процессоров I-4004 - IP4, Amiga... (ну и тут список на 2 страницы, мелко и подробно)
Р - Ну что же, зарплата у нас по договоренности, но гор золота мы вам не сулили. Максимум на что вы можете расчитывать это 150 тыс Евро.
П -!?!?!?
Р - И только не надо весь рабочий день мечтать о коттедже на Канарах, максимум, что мы можем прежложить нашим сотрудникам - это 6-комнатную в центре Москвы.
П - пытается усидеть на месте, и вести себя пристойно
Р - и не надо думать, что если у шефа красный Ferrari, то вы его тоже получите. Ваш максимум - это BMW M6
П - (не выдержав) Пиздите!
Р - (Чинно) Ты первый начал
А почему в математическом списке совсем нет алгебры (группы/кольца/поля, теория Галуа, алгебраическая геометрия, квантовые группы, алгебры Клиффорда), элементарной и алгебраической теории чисел, теории категорий, алгебраической комбинаторики + вычислительных версий всего этого? Еще теорию игр, кстати, забыли.

Мне, конечно, кажется, что программисту это все не надо, но если уж пошла такая пьянка, то это уж никак не менее полезно чем функан и диффуры.
Буду признателен, если вы напишете мотивацию к этому (где используется, для чего полезно и все такое).
Непрактично, и отсутствует самое главное. А непрктично, потому что главное и отсутствует. Это видно по обилию экзотических предметов. Вот есть такой довольно известный человек Панчул, работает в МИПСе. Неоднократно высказывался в духе, что знание квантовой физики (и химию туда же), абсолютно параллельно навыками по разработке компьютеров.

Edited at 2011-11-02 00:41 (UTC)
А что самое главное?
Пока ты выучишь отсюда четверть, половина выученного уже будет низачем не нужна (COM в моём 2011??)

Вообще многовато унылого виндузятничества а-ля "компьютер - это серый ящик с экраном, на котором написано C:\"

Выучить отсюда всё так, чтобы можно было признаваться про любой пункт на собеседовании и не быть выгнанным с позором - невозможно. Про это - начало вот какой композиции:
http://music.yandex.ru/#!/track/2779308/album/298230
В Windows вы наблюдаете работу десятков COM-объектов, даже не успев залогиниться. Да, в 2011 году.
Конечно-конечно. ACM Curriculum тоже всего лишь шутка. И во всех американских вузах его в шутку проходят лет 5.

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

User higimo referenced to your post from Теоретический минимум для программиста saying: [...] Оригинал взят у в Теоретический минимум для программиста [...]
Что-то мне крайне сомнительно, что это всё действительно нужно знать и чтобы работать по специальности программист строго необходимо 5 лет вкалывать в ВУЗе.
Работать по специальности программист и быть хорошим специалистом — разные вещи.

Theoretical minimum for programmer

User ri_owen referenced to your post from Theoretical minimum for programmer saying: [...] знать и чем следует свободно владеть. В комментариях приветствуются исправления и дополнения. [...]
Я пока-что не читал комментарии, но вот что рискну сказать:

а не сделать ли авторам (а кому же еще?), если у них есть такая возможность и желание, отдельную wiki, в которой данный документ будет играть роль корневого? Далее энтузиасты могли бы расставить ссылочки, запостить апдейты итд итп.
В планах есть, только вики для апдейтов не подходит.

Как качественно оценить программиста (себя и других)

Пользователь dancheg сослался на вашу запись в «Как качественно оценить программиста (себя и других)» в контексте: [...] себя и программистов, которые с тобой работают. Великолепно показывает прогресс. И если вот это [...]
Лиспа не увидел. Устарело?
SICP есть же. И да, лисп говно.
Страница 6 из 7
<<[1] [2] [3] [4] [5] [6] [7] >>