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

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

А список блогов для чтения не планируете составлять?
Боюсь, у меня по этой теме недостаточно материала.
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
П - (не выдержав) Пиздите!
Р - (Чинно) Ты первый начал
А почему в математическом списке совсем нет алгебры (группы/кольца/поля, теория Галуа, алгебраическая геометрия, квантовые группы, алгебры Клиффорда), элементарной и алгебраической теории чисел, теории категорий, алгебраической комбинаторики + вычислительных версий всего этого? Еще теорию игр, кстати, забыли.

Мне, конечно, кажется, что программисту это все не надо, но если уж пошла такая пьянка, то это уж никак не менее полезно чем функан и диффуры.
Буду признателен, если вы напишете мотивацию к этому (где используется, для чего полезно и все такое).

unknown_orient

8 years ago

sharpc

8 years ago

unknown_orient

8 years ago

sharpc

8 years ago

Deleted comment

А что самое главное?

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

unknown_orient

8 years ago

sharpc

8 years ago

unknown_orient

8 years ago

sharpc

8 years ago

unknown_orient

8 years ago

sharpc

8 years ago

Пока ты выучишь отсюда четверть, половина выученного уже будет низачем не нужна (COM в моём 2011??)

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

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

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

sharpc

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

unknown_orient

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

alamar

8 years ago

udpn

8 years ago

Deleted comment

Конечно-конечно. ACM Curriculum тоже всего лишь шутка. И во всех американских вузах его в шутку проходят лет 5.

Deleted comment

sharpc

7 years ago

Deleted comment

sharpc

7 years ago

Deleted comment

sharpc

7 years ago

udpn

7 years ago

Deleted comment

udpn

7 years ago

Deleted comment

udpn

7 years ago

Deleted comment

sharpc

7 years ago

udpn

7 years ago

sharpc

7 years ago

udpn

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

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

ochen_dobryi

7 years ago

sharpc

7 years ago

ochen_dobryi

7 years ago

sharpc

7 years ago

ochen_dobryi

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

udpn

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

unknown_orient

7 years ago

sharpc

7 years ago

unknown_orient

7 years ago

udpn

7 years ago

unknown_orient

7 years ago

udpn

7 years ago

unknown_orient

7 years ago

udpn

7 years ago

unknown_orient

7 years ago

udpn

7 years ago

unknown_orient

7 years ago

udpn

7 years ago

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

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

yigal_s

7 years ago

sharpc

7 years ago

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

Tom Wang [yandex.ru]

6 years ago

sharpc

6 years ago

Tom Wang [yandex.ru]

6 years ago

sharpc

6 years ago

Tom Wang [yandex.ru]

6 years ago

sharpc

6 years ago

udpn

7 years ago

Previous
← Ctrl ← Alt
Next
Ctrl → Alt →