?

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

Страница 4 из 7
<<[1] [2] [3] [4] [5] [6] [7] >>
автомат Калашникова
гыгы

я настаиваю на AR15 и FN/FAL
Я настаиваю на том, чтобы выпустить очередь из AA-12 в каждого, кто ещё раз скажет что-то подобное.
давай давай.
арбайт по стахановски.
как выучишь - доложышь по всей формэ.
Нотариально заверенный снимок погонов в студию или GTFO.
в стране где половина населения ходит срать "на улицу",
програмист должен ещо разбираццо в ремонте афтомобилей, продаже сигарет в ларьке
и ешо "немножко шить".
Обоснуйте.
У вас дизайн отвратителен, читать обсуждения невозможно.

По существу. Не нашёл поиском на странице "Reg", "регу". Регулярные выражения - это охрененно необходимая программисту сегодня штука. Можно выкинуть 99% из перечисленной хреноты, но регулярные выражения добавить необходимо. Это вещь же вообще сейчас повсеместная во всех языках. Видели наверно у меня пример разбора мата, одна маленькая строчка, а без гегулярных выражений приличная программка будет с кучей ифов, ну либо с какими-инибудь корявыми поделками своих автоматов.

Кроме того, штука ещё интересна тем, что пришла из нейрофизиологии. То есть в ней есть очень особое даже скажу фундаментальное самостоятельное направление.
Спасибо за ваш интерес, но регулярные выражения в теормине встречаются четырежды (в пункте 9): как часть иерархии Хомского, как ссылка на книгу Фридла, как пункт регекспы и их сложность, и как реализации PCRE/POSIX RE.

На пенсию, срочно!!!!!

User duska_mom referenced to your post from На пенсию, срочно!!!!! saying: [...] Прочитала вот это: http://sharpc.livejournal.com/67583.html [...]

Просто блеск :))))

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

Re: Просто блеск :))))

Вы где-то видели в ЖЖ возможность "заменить шаблон"? Я пока видел только возможность редактировать CSS, с помощью которого кроме небольших хаков дизайна ничего сделать нельзя.

В любом случае, вам с такими высерами в сторону СУПа.

омг

User jamhed referenced to your post from омг saying: [...] http://sharpc.livejournal.com/67583.html [...]
А иностранные языки? По мне лучше, чтобы их было два и более.
А почему так мало физики? Конечно, всего Ландафшица, наверное, знать не обязательно, но хотя бы на уровне курсов Савельева, или Сивухина...
Это технический список. Для общего образования физика необходима, но я старался ограничиться ее несложным подмножеством, непосредственно использующимся в IT.

Свои пять копеек

User skiminog referenced to your post from Свои пять копеек saying: [...] Знаете, а вот мне теорминимум [...]
Живо напомнило винрарнейшую книжку «Это должен знать каждый матшкольник»: http://www.ozon.ru/context/detail/id/2423161/ .

Я знал примерно пару человек, которые действительно знали все ее содержание. Они были практически бессменными победителями любых математических и геометрических олимпиад всероссийского уровня.
Да, она есть у меня в ToRead :) Но список, как неоднократно отмечалось в разных обсуждениях, почти полностью проходится в нормальных вузах, по многим темам заметно более глубоко.
В номер 31 надо ОБЯЗАТЕЛЬНО добавить зависимые типы данных.

Это очень важная и элегантная теория. И она постепенно пробивается в разные области разработки ПО.
Спасибо, добавил.
Это ничего, что есть государственный стандарт на эту специальность, в котором все это написано?
Можно ссылку? Какую именно специальность вы имеете ввиду?
Очень хороший список, надо ответить.
Тоже считаю, что список очень сдвинут в сторону low-level C++ программирования, скорее всего в стороне геймдева. Такое еще бывает во всяких core tech больших и маленьких компаний (привет Гуглу и MS), да в больших кодобазах, которые уже никогда не уйдут от С++. Отсюда например внезапный референс на Qt и детали 3D-графики.

Чуть в сторону - и список становится неполным, от структуры компиляторов(пусть даже парсеров) до того же Питона скажем или баз данных.

Но список все равно хороший, как пример отдельной области.
Спасибо. Что следует добавить в парсеры и базы данных, чтобы сгладить сдвиг?
Я думаю, что за Сальтхаусом можно повторять.
да ну, бесполезная фигня такой список.

1. Люди, которые во всем этом ориентируются, на собседование не приходят

2. Люди, которые в этом всем ориентируются, не знают ничего конкретного что им понадобится завтра на работе.

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