?

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

Страница 3 из 7
<<[1] [2] [3] [4] [5] [6] [7] >>
У вас джигурда головного мозга, как и у большинства свежевылупившихся студиозусов мгу.
И три года слишком мало, чтобы понять - на RUP или, скажем, паттерны проектирования например можно потратить годы и так и не понять толком.
С приведенным предисловием список выглядит унылым пересказом анекдота "Я знаю карате, айкидо, джиу-джитсу и много других страшных слов".
Слишком жирно.

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

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

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

Охуенно у вас сверстан дневник. Сразу видно тех. минимум в действии
Кстати, да. Контентная часть в 500 пикселей шириной - это круто! Программисты - они такие программисты! Хорошо ещё, font-size:9px не использует
И все ваши продукты не дойдут до конечного пользователя, т.к. вы забыли инсталляцию: Windows Installer, WiX, InstallShield
Действительно, стоит добавить. Но я не могу пропустить тот факт, что это реестр-индуцированный маразм.

(Анонимно)

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

Теормінімум для програміздів.

User navpaky referenced to your post from Теормінімум для програміздів. saying: [...] Тут товариш викладає про те, що повинен знати программізд http://sharpc.livejournal.com/67583.html [...]

"concurrent programming" == программирование "конкурентное" ?!!

А, простите, какой мудак переводит "concurrent programming" как программирование "конкурентное"?!!
Concurrent означает "одновременное", т.е. вообще говоря "программирование систем с параллельными вычислениями" в широком смысле

Re: "concurrent programming" == программирование "конкурентное" ?!!

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

Две полярности

User mehas referenced to your post from Две полярности saying: [...] некоторые хорошие студенты одного из лучших вузов России не знают, что такое хеш-таблицы. 2) Здесь [...]

Как Остаться Программистом в 40 и Больше Лет

User topbloger referenced to your post from Как Остаться Программистом в 40 и Больше Лет saying: [...] Все, что должен знать программист [...]

Как Остаться Программистом в 40 и Больше Лет

User t30p referenced to your post from Как Остаться Программистом в 40 и Больше Лет saying: [...] Все, что должен знать программист [...]
Вы крутые парни, если всё это читали-изучали.
У меня всего один вопрос: сможете придумать алгоритм удаления чётных элементов массива без создания вспомогательных хранилищ данных.
Да, обход с конца массива с последующим сдвигом элементов не предлагать :-)
Вопрос номер ноль: а что понимается под термином "массив" в данном случае?
Есть язык(и), в которых "массив" определяется так, что код сводится именно к "удаляём чётные элементы массива".
Страница 3 из 7
<<[1] [2] [3] [4] [5] [6] [7] >>