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 →
У вас джигурда головного мозга, как и у большинства свежевылупившихся студиозусов мгу.
И три года слишком мало, чтобы понять - на RUP или, скажем, паттерны проектирования например можно потратить годы и так и не понять толком.
С приведенным предисловием список выглядит унылым пересказом анекдота "Я знаю карате, айкидо, джиу-джитсу и много других страшных слов".
Слишком жирно.

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

emdin

8 years ago

udpn

8 years ago

emdin

8 years ago

udpn

8 years ago

emdin

8 years ago

sharpc

8 years ago

udpn

8 years ago

emdin

8 years ago

sharpc

8 years ago

emdin

8 years ago

sharpc

8 years ago

udpn

8 years ago

udpn

8 years ago

emdin

8 years ago

Ivan Ivanov

8 years ago

sharpc

8 years ago

jau_23

8 years ago

Anatoly Borodin

8 years ago

sharpc

8 years ago

Anatoly Borodin

8 years ago

Ivan Ivanov

8 years ago

udpn

8 years ago

cpplang

8 years ago

цукерберг не позвонит
Чтобы это знать по-хорошему, нужно лет 30, т.к. надо опыт накопить, а не просто книжку прочесть. Как раз к пенсии можно успеть, чтобы на ней было нескучно.
пока вы тут будете разрабатывать кандминимумы для сферических программистов в рыночных условиях, больше напоминающих вакуум, - прийдут индусы и отберут у вас работу.
М-да. Что на это можно сказать: напоминает известное сочинение о том, что нужно админу (там, где было управление всеми видами самоходной техники, практическая психология и так далее). На самом деле здесь пересекаются знания совершенно разных профилей работы. Например, крайне странно видеть одновременно детальные знания процессоров x86 (U-pipe/V-pipe), высокий уровень знания C++ и тонкости сетевых протоколов. Или, например, MPI и C++ - это совершенно разные миры, которые просто не сочетаются на практике в одном изделии. Или численные методы и теория грамматик, основы теории алгоритмов. А хохмы вроде Duff's device вообще не имеют смысла в современном мире.

Вообще тут можно насчитать несколько десятков противоречивых пунктов. В общем случае всё описанное подходит только для одного: в качестве курсов очень усиленного варианта подготовки новоиспечённого суперпрограммиста без реальной практики (пока). Как только он начнёт работать, он >80% из этого выкинет нафиг.

BTW, про Калашникова это шутка? ;) Я уже не стал вчитываться, но, похоже, у вас там таких "пасхальных яиц" ещё с десяток.

Охуенно у вас сверстан дневник. Сразу видно тех. минимум в действии
Кстати, да. Контентная часть в 500 пикселей шириной - это круто! Программисты - они такие программисты! Хорошо ещё, font-size:9px не использует

notffirk

8 years ago

И все ваши продукты не дойдут до конечного пользователя, т.к. вы забыли инсталляцию: Windows Installer, WiX, InstallShield
Действительно, стоит добавить. Но я не могу пропустить тот факт, что это реестр-индуцированный маразм.

sharpc

8 years ago

Anonymous

March 25 2011, 11:09:36 UTC 8 years ago

спасибо, подрочил
Тема верификации и валидации ПО не раскрыта.
Подскажете ключевые слова для добавления? (И в какой пункт?)

Stanislav Vorobyev

8 years ago

sharpc

8 years ago

User navpaky referenced to your post from Теормінімум для програміздів. saying: [...] Тут товариш викладає про те, що повинен знати программізд http://sharpc.livejournal.com/67583.html [...]
А, простите, какой мудак переводит "concurrent programming" как программирование "конкурентное"?!!
Concurrent означает "одновременное", т.е. вообще говоря "программирование систем с параллельными вычислениями" в широком смысле
Калька с английского, встречается в рувики, имхо, воспринимается легче, чем любой другой перевод.
User mehas referenced to your post from Две полярности saying: [...] некоторые хорошие студенты одного из лучших вузов России не знают, что такое хеш-таблицы. 2) Здесь [...]
User topbloger referenced to your post from Как Остаться Программистом в 40 и Больше Лет saying: [...] Все, что должен знать программист [...]
User t30p referenced to your post from Как Остаться Программистом в 40 и Больше Лет saying: [...] Все, что должен знать программист [...]
Вы крутые парни, если всё это читали-изучали.
У меня всего один вопрос: сможете придумать алгоритм удаления чётных элементов массива без создания вспомогательных хранилищ данных.
Да, обход с конца массива с последующим сдвигом элементов не предлагать :-)
Вопрос номер ноль: а что понимается под термином "массив" в данном случае?
Есть язык(и), в которых "массив" определяется так, что код сводится именно к "удаляём чётные элементы массива".

cpplang

8 years ago

cathody

8 years ago

udpn

8 years ago

cpplang

8 years ago

sharpc

8 years ago

cpplang

8 years ago

udpn

8 years ago

cpplang

8 years ago

sharpc

8 years ago

cpplang

8 years ago

sharpc

8 years ago

cpplang

8 years ago

sharpc

8 years ago

cpplang

8 years ago

sharpc

8 years ago

cpplang

8 years ago

sharpc

8 years ago

cpplang

8 years ago

udpn

8 years ago

udpn

8 years ago

Previous
← Ctrl ← Alt
Next
Ctrl → Alt →