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 →
автомат Калашникова
гыгы

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

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

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

cobetbi

8 years ago

User duska_mom referenced to your post from На пенсию, срочно!!!!! saying: [...] Прочитала вот это: http://sharpc.livejournal.com/67583.html [...]
Отличный пример.
Как случается сплошь и рядом, человек, знакомый с богатой терминологией, не в состоянии сделать нормально читаемый дизайн своего собственного журнала :))
Вы где-то видели в ЖЖ возможность "заменить шаблон"? Я пока видел только возможность редактировать CSS, с помощью которого кроме небольших хаков дизайна ничего сделать нельзя.

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

ursus_a

8 years ago

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

Я знал примерно пару человек, которые действительно знали все ее содержание. Они были практически бессменными победителями любых математических и геометрических олимпиад всероссийского уровня.
Да, она есть у меня в ToRead :) Но список, как неоднократно отмечалось в разных обсуждениях, почти полностью проходится в нормальных вузах, по многим темам заметно более глубоко.

leventov

8 years ago

sharpc

8 years ago

leventov

8 years ago

sharpc

8 years ago

leventov

8 years ago

sharpc

8 years ago

В номер 31 надо ОБЯЗАТЕЛЬНО добавить зависимые типы данных.

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

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

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

boris_batkin

8 years ago

sharpc

8 years ago

udpn

8 years ago

Deleted comment

Я думаю, что за Сальтхаусом можно повторять.

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

Deleted comment

sharpc

8 years ago

dfyz

8 years ago

sharpc

8 years ago

да ну, бесполезная фигня такой список.

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

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

Я бы ожидал чего-то среднего между тем что здесь и банальными понятиями массив, дерево, связный список....
Баланс между собеседованиями и приглашениями на работу устанавливается глубиной domain-specific знаний, которые я старался не включать в список, а не общеобразовательных.

Tom Wang [yandex.ru]

8 years ago

Previous
← Ctrl ← Alt
Next
Ctrl → Alt →