Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=10103118&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 14:15:04 2016
Кодировка: Windows-1251
Теоретический минимум для программиста - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
vissi

Рег.: 30.09.2007
Сообщений: 9275
Рейтинг: 8222
  Теоретический минимум для программиста
      25.03.2011 14:24
8

Это копипаста из ЖЖ

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

Построенные на теории массового обслуживания и протоколе GSM сети мобильной связи; PHP-скрипты, исполняющиеся на удаленных серверах и передающие свою выдачу через Ethernet по TCP/IP на компьютеры с NDIS-драйверами; процессоры, переупорядочивающие и спекулятивно исполняющие наборы инструкций для того, чтобы скомпенсировать вызванную ограничениями полупроводниковой электроники и скоростью света остановку роста тактовой частоты; рассчитанные на ЭВМ корпуса самолетов и автомобилей, лекарства и структуры ДНК; компьютерные игры, ради крохотного блика в которых пишутся мегабайты заполненных интегралами Френеля статей; электронные фильмы и книги; алгоритмы NLP и TreeNet, вызывающие нам из огромных баз данных поисковую выдачу - вот то, что окружает нас каждый день благодаря программистам, благодаря оригинальным подходам и фундаментальным знаниям, благодаря продуманной и отточенной десятилетиями методологии разработки и управления сложностью ПО.

Я и мои единомышленники взяли на себя труд составить теоретический минимум для программиста на основании наиболее ярких отраслей IT, вошедших даже в программы нормальных университетов, на основании собеседований и постоянно пригождающихся на практике знаний. Часть из пунктов этого минимума можно изучить за 5 минут по википедии, часть же потребует серьезного труда на протяжении нескольких месяцев, но это именно то, что обязательно следует знать и чем следует свободно владеть. В комментариях приветствуются исправления и дополнения.



C++, стандарт, Comeau, 1TBS, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII, правило трех, exception-safety, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Сик-Ламсдейн/Карлссон, TR1, TR on C++ performance, тест Степанова, forwarding problem, SPECS, C++0x


Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile


Мультитредность, обедающие философы, deadlock/race condition/starvation, атомарность, lock инструкции процессора, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads


Язык ассемблера x86, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг


Аппаратное обеспечение, полупроводниковая электроника/спинтроника/фотоника, NOR/NAND, транзистор, схемотехника, микрокод, технология создания процессоров, VID/PID, Verilog/VHDL/SystemC, Arduino, устройство HDD/SSD/DVD, RISC/CISC, Flynn's taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86


Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, branch predict, префетчинг, u-pipe/v-pipe, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, тайминг памяти, кольца защиты


Дискретная математика, K2, теорема Поста, схемы, конечные автоматы, клеточные автоматы, автомат Калашникова, ДКА и НДКА


Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем


Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА -> ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE/POSIX RE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL


Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Препарата-Шеймос, структуры данных, алгоритмы, сложность и символы Ландау, классы сложности, NP-полные задачи, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика


Машинное обучение, машинное зрение, OpenCV, image processing, OCR, фильтры Собеля, каскад Хоара, введение в психофизиологию зрения, TreeNet, нейросети, сети Кохонена, генетические алгоритмы, муравьиные алгоритмы, information retrieval/data mining/natural language processing, алгоритмы оптимизации, SVM, gradient boosting, метод отжига, hill climbing, подходы к моделированию AI


Численные методы, метод Гаусса, интер- и экстраполяция, сплайны, МНК, метод Эйлера и Рунге-Кутты, дихотомия/метод Ньютона, метод Симпсона, метод Монте-Карло, метод Галеркина, QR и LU-декомпозиция, FFT/STFT, сходимость и устойчивость


Теория информации, сжатие, Хаффман, RLE, LZ, коды коррекции ошибок, информационная энтропия, формула Шеннона, сложность Колмогорова


Криптография, Ященко, симметричная, асимметричная, Диффи-Хеллман, RSA, DES, AES, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки, WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, HTTPS/SSL, доказательство с нулевым разглашением


Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)


Физика, правила Кирхгофа, комплексное сопротивление, скорость и частота света, лагранжиан


Химия, стехиометрия, химия кремния :)


Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер, защитное программирование, паттерны, GRASP, UML, OOP/OOD/OOA, правило Лисков, метрики кода


Методологии разработки, Waterfall/RUP/Agile/Scrum/Kanban/XP, TDD/BDD, CASE


Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI


Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), valgrind, системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ, профайлинг, lint, багтрекеры, документирование кода, сборщики кода типа cmake


Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre


Операционные системы, Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX


COM, OLE/ActiveX/COM+, ATL, Роджерсон/Таварес, апартменты, моникеры, дополнительные ключевые слова VC++


Сеть, OSI, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/ASN.1, ICMP, роутинг, ARP, атака Митника, syn flood, HTTP/FTP, P2P, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth


Графика, алгоритм Брезенхема, цветовые модели, трассировка лучей vs полигональная графика, OpenGL/GLSL, DirectX/DirectShow/DirectAudio/HLSL, stencil/depth/alpha-test, графический конвейер в DirectX 11, шейдеры, модели освещения (Фонг), пропускная способность, fillrate, OpenCL/CUDA, ландшафты, лоды, тени, текстурирование и фильтрация, антиалиасинг, HDR, tone mapping


Форматы, XML/XSLT/XPath/DOM/SAX, RTF/ODF, JSON/BSON, torrent, YAML, JPEG/PNG/WebP, AVI/MPEG/RIFF/WAV/MP3/OGG/WebM, SVG, Unicode, кодировки однобайтные/UTF-8/UTF-16/UCS-2/UTF-32


Базы данных, Грубер, ANSI SQL, T-SQL, MySQL/PostgreSQL/MS SQL/BDB/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP


Прикладное программирование, C#/F#/Nemerle, Шилдт/Троелсен/Рихтер, генерики, yield, linq/plinq, рефлексия, AST, WCF, WinForms/WPF/Silverlight, AOP, фреймворки логгирования, .NET assembly


Квантовые вычисления, алгоритм Шора, квантовая криптография


Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), монады, тайпклассы, АТД, система типов Хиндли-Милнера, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)


Веб-программирование и скриптовые языки, Фланаган/Zend PHP5 Certification Course + Study Guide, Apache/nginx, CGI/FastCGI, PHP/Zend Framework/phpDaemon/Zend Engine/Doctrine или Propel/CodeIgniter или Symphony или Yii, Python/Django/Twisted, Ruby/RoR, ASP.NET MVC, JavaScript/jQuery/ExtJS/node.js, ООП в JavaScript, HTML5/XHTML/doctype/табличная и блочная верстка/CSS3, RSS, canvas/WebGL, Ajax/Comet/WebSockets, вопросы безопасности: XSS, SQL injection, CSRF, highload, SWIG


Проектирование GUI, Раскин, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX

http://sharpc.livejournal.com/67583.html
-
От себя отмечу, что не раскрыта тема верификации/валидации ПО, а COM можно оставить в истории.

Пора посыпать голову пеплом?





Редактировал vissi (25.03.2011 14:40)
nafig_batat
looking for you

Рег.: 25.10.2005
Сообщений: 11580
Из: улица Ленина
Рейтинг: 8535
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 14:35
3

почему не упомянута книга "asp.net для чайников за 2 недели"?



слава роботам!!!
JUnit

Рег.: 08.03.2005
Сообщений: 3812
Из: Беляево
Рейтинг: 1621
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 14:39
4

// Квантовые вычисления, алгоритм Шора, квантовая криптография

И Гровера, Гровера не забываем - как же в наше время искать в неупорядоченном списке из N элементов медленнее, чем за время "квадратный корень из N"?

---

Надо прежде всего интересоваться своей областью, а уж дальше - методом куста. В списке много полезного, но подавляющее большинство, ИМХО, можно освоить на ходу, вместо того, чтобы забивать бошку всякой модной сегодня хренью.

KOT3

Рег.: 31.12.2010
Сообщений: 151
Рейтинг: 207
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 14:45
24


 
В ответ на:

теоретический минимум для программиста



самый ебический теоретический минимум который я видел


unkulunkulu
unkulunkulunkulu

Рег.: 12.11.2006
Сообщений: 18453
Из: 13000
Рейтинг: 11759
  Re: Теоретический минимум для программиста [re: KOT3]
      25.03.2011 14:48
2

Ну а хули вы хотели? :cool:

nelapsi
the wumbologist

Рег.: 10.11.2003
Сообщений: 10763
Из: Orbis Tertius
Рейтинг: 10648
  Re: Теоретический минимум для программиста [re: unkulunkulu]
      25.03.2011 15:27
2

1) представил резюме с таким списком
2) я знаю кунфу, карате, джиуджитсу и много других страшных слов
 :grin:



Your touch will set me free
Partizan
везунок

Рег.: 17.11.2003
Сообщений: 1923
Рейтинг: 502
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 15:36
 

А есть человек на Земле, который все это знает?



Где картинки? Как можно делать такие серьезные утверждения без картинок?
vissi

Рег.: 30.09.2007
Сообщений: 9275
Рейтинг: 8222
  Re: Теоретический минимум для программиста [re: Partizan]
      25.03.2011 15:42
 

Видимо, сам sharpc имеет понятие о большинстве вещей из этого списка )



Rott

Рег.: 07.09.2005
Сообщений: 4403
Рейтинг: 2885
  Re: Теоретический минимум для программиста [re: KOT3]
      25.03.2011 16:00
3

В ответ на:

самый ебический теоретический минимум который я видел



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

ayvango
ушастый

Рег.: 10.01.2006
Сообщений: 27732
Из: Воронеж
Рейтинг: 11832
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 16:13
5

Во-первых, автомат калашинкова - лишний.
Во-вторых, не хватает модели акторов хотя бы на примере эрланговской виртуальной машины.
В-третьих, непозволительно забыть про сжатие с потерями. Психоакустическая модель и сжатие звука, сжатие изображений: jpeg, jpeg2000, фрактальное сжатие. Сжатие видео, компенсация движения, I/B фреймы, интерлейс и прочее.
В-четвертых, где теория автоматики?
В-пятых, забыли про стрелки и звезду клейсли в функциональном программировании, для сетевых p2p технологий неплохо бы знать теорию перколяции.



Сеть темна и полна ужасов
nelapsi
the wumbologist

Рег.: 10.11.2003
Сообщений: 10763
Из: Orbis Tertius
Рейтинг: 10648
  Re: Теоретический минимум для программиста [re: ayvango]
      25.03.2011 17:07
8

в-шестых, не написано, что делать одинокому 40-летнему программисту с минимумом знаний и без опыта работы :o



Your touch will set me free
patnic
baron

Рег.: 02.11.2002
Сообщений: -666
Рейтинг: 1183
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 18:37
11

я обязательно прочитаю этот твой пост до самого конца



тел: +7(926)5585879 icq: 169182107 email: patnic@mail.ru private: message
nop
nop

Рег.: 12.10.2004
Сообщений: 2676
Из: nop
Рейтинг: 3439
  Re: Теоретический минимум для программиста [re: vissi]
      25.03.2011 18:52
7

хорошо, что собрали воедино, надо бы взботнуть...
Однако, название у этого добра совершенно некорректное. Это не теоретический минимум, это теоретический максимум, я бы сказал. Потому что, скажем, квантовые алгоритмы прочувствовать без квантовой механики просто нельзя. А ее не заботать просто так.



nop
DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31421
Рейтинг: 8956
  Re: Теоретический минимум для программиста [re: nop]
      26.03.2011 00:28
7

Quote:

Это не теоретический минимум, это теоретический максимум, я бы сказал




скорее сумма всех теор. минимумов из каждой программистской области

а каждый разработчик "тусуется" в 1-5(изредка больше) указанных областей

DeeMon

Рег.: 28.03.2004
Сообщений: 1746
Из: Siam gulf
Рейтинг: 3029
  Re: Теоретический минимум для программиста [re: vissi]
      26.03.2011 07:54
 

Quote:

COM можно оставить в истории.




Таки нельзя. Офис и DirectX его обессмертили.

Vilfred_Sagen
спать хочу

Рег.: 29.10.2004
Сообщений: 22313
Из: moscow
Рейтинг: 7124
  Re: Теоретический минимум для программиста [re: vissi]
      26.03.2011 11:40
5

ну, к этому надо стремится, а ваще конешно феерический бред

xandr

Рег.: 26.11.2004
Сообщений: 6547
Рейтинг: 1779
  Re: Теоретический минимум для программиста [re: vissi]
      27.03.2011 10:51
8

Quote:

Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)




Вот это порадовало.
Некоторые одним только матаном всю жизнь занимаются, а для других это теоретический минимум

Kraft
Carpal Tunnel

Рег.: 09.12.2002
Сообщений: 3704
Рейтинг: 1427
  Re: Теоретический минимум для программиста [re: xandr]
      27.03.2011 22:03
3

Quote:

Математика



Мне от одного этого уже поплохело.
- А математику вы умеете?
- Конечно.



Пароль, чтобы не забыть (без кавычек): 'lEujoDUp3xoq'
Nine17
Furia Roja

Рег.: 26.06.2003
Сообщений: 25557
Рейтинг: 13160
  Re: Теоретический минимум для программиста [re: xandr]
      28.03.2011 00:31
-1

Quote:

Некоторые одним только матаном всю жизнь занимаются, а для других это теоретический минимум



Самое главное как это поможет клепать вебформы.



Entre flores fandanguillos y alegria nació España mi tierra de amor!
ayvango
ушастый

Рег.: 10.01.2006
Сообщений: 27732
Из: Воронеж
Рейтинг: 11832
  Re: Теоретический минимум для программиста [re: Nine17]
      28.03.2011 01:10
2

Quote:


Самое главное как это поможет клепать вебформы.




ты сможешь придумать клевую матановую капчу, не?




Сеть темна и полна ужасов
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 1 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в