/fcim_poo_21.6

object-oriented programming for beginners

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Что можно посмотреть и почитать на каникулах

Книги и сборники

  1. Вводный курс по программированию в data-oriented парадигме, рассматривает альтернативный объектно-ориентированному подход к написанию программ -- R. Fabian, Data-Oriented Design (англ.) https://www.dataorienteddesign.com/dodbook/
  2. Вводный курс по программированию для студентов MIT, хороший справочник по фундаментальным элементам программирования, данная версия содержит примеры кода, написанные на JavaScript -- Gerald J. Sussman et al., Structure and interpretation of computer programs - SICP (англ.) https://sourceacademy.org/sicpjs/prefaces03
  3. Сборник статей, обсуждающих высокоуровневое программирование от одного из авторов стандартной библиотеки контейнеров С++ -- Alex A. Stepanov, Notes on programming (англ.) http://stepanovpapers.com/notes.pdf
  4. Вводный курс по программированию от автора языка Pascal -- Niklaus Wirth, Algorithms + data structures = programming (англ.) https://people.inf.ethz.ch/wirth/AD.pdf
  5. Сборник статей, обсуждающих математические основы языков программирования -- Cristopher Strachey, Fundamental concepts in programming languages (англ.) https://classes.cs.uoregon.edu/14S/cis607pl/Papers/fundamental-1967.pdf
  6. Вводный курс по программированию, затрагивающий философские аспекты фундаментальных элементов программирования -- Alex A. Stepanov et al., Elements of programming - EOP (англ.) http://elementsofprogramming.com/eop.pdf
  7. Конспекты лекций курса по алгоритмам для студентов MIT, Introduction to algorithms, https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/pages/lecture-notes/
  8. Лямбда-исчисление - математическая модель, которая служит основой для архитектуры компьютеров и многих языков программирования -- Владимир А. Башкин (ЯрГУ), Лямбда-исчисление (рус.) http://www.lib.uniyar.ac.ru/edocs/iuni/20180409.pdf
  9. Книга об основах языка С++ для начинающих -- Андрей В. Столяров, Введение в язык С++ (рус.) http://www.stolyarov.info/books/pdf/cppintro5.pdf

Статьи

  1. Cоветы начинающим программистам (англ.) https://grugbrain.dev/
  2. Статья, обсуждающая принципиальные моменты, связанные с понятием "тип данных" в программировании -- Luca Cardelli et al., On understanding types, data abstractions, and polymorphism (англ.) http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf
  3. Статья, обсуждающая принципы, которые воздействуют на продукт, разрабатываемый группой людей, сейчас эти принципы носят название "закона Конвея" -- Melvin E. Conway, How do commitees invent? (англ.) http://www.melconway.com/Home/Committees_Paper.html
  4. Статья о важности статического анализа кода, написана бывшим главным инженером Oculus Rift -- John Carmack, In-depth: static code analysis (англ.) https://www.gamedeveloper.com/programming/in-depth-static-code-analysis
  5. Любопытный взгляд на развитие С++, который в свое время вызвал много споров в среде профессиональных С++-разработчиков, статья начинается на стр. 47 -- Henrique Bucher, Why I don't spend time with modern C++ anymore (англ.) https://hackerbits.com/wp-content/uploads/2016/11/hacker_bits_issue11.pdf
  6. Статья об опыте перехода с написания программ в С++ на С, с интересными выводами -- Andre Weissflog, One year of C (англ.) https://floooh.github.io/2018/06/02/one-year-of-c.html
  7. Статья, посвященная фундаментальным основам шаблонов проектирования от "гуру" объектно-ориентированного программирования Дядюшки Боба -- Robert C. "Uncle Bob" Martin, Design principles and design patterns (англ.) https://web.archive.org/web/20150906155800/http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
  8. Статья об истоках функциональных языков программирования от автора языка Fortran -- John Backus, Can programming be liberated from the von Neumann style? (англ.) http://worrydream.com/refs/Backus-CanProgrammingBeLiberated.pdf

Видео

  1. Короткие видео об основах С++ от Яндекса и МФТИ, https://www.youtube.com/@user-kd3vy7vs8l/playlists
  2. Рассуждения о применимости технологии "блокчейн" в сфере денежного обращения и децентрализации -- Cryptocurrency: What is the Blockchain Threat Model?, https://youtu.be/kbYutOsrpvs
  3. Введение в декомпиляцию С++ от создателя сайта godbolt.org -- What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid, https://youtu.be/bSkpMdDe4g4
  4. Исторический взгляд на функциональное программирование от автора SICP -- Programming is (should be) fun!, https://youtu.be/2MYzvQ1v8Ww
  5. Обсуждение мифов, связанных с "чистым" подходом к написанию программ в ООП -- "Clean" Code, Horrible Performance, https://youtu.be/tD5NrevFtbU
  6. Лекция о пагубном влиянии программ плохого качества на нашу жизнь -- Preventing the Collapse of Civilization, https://youtu.be/ZSRHeXYDLko
  7. Интересный взгляд на роль абстракции в программировании -- How Binary Works, and the Power of Abstraction, https://youtu.be/PMpNhbMjDj0
  8. Разбор различных трюков в С++, которые сильно влияют на производительность -- Want fast C++? Know your hardware!, https://youtu.be/BP6NxVxDQIs
  9. Лекция о различных тонкостях языка С и их применении -- Modern C and What We Can Learn From It, https://youtu.be/QpAhX-gsHMs
  10. Мнение о недостатках ООП -- Object-Oriented Programming is Embarrassing: 4 Short Examples, https://youtu.be/IRTfhkiAqPw
  11. Мнение о достоинствах ООП -- Object-Oriented Programming is Good*, https://youtu.be/0iyB0_qPvWk
  12. Лекция, обсуждающая реальный производственный случай, который требовал сделать рефакторинг кода программы для улучшения производительности, а также выводы, которые можно из этого сделать -- Simple Code, High Performance, https://youtu.be/Ge3aKEmZcqY
  13. Лекция с примерами reverse engineering подхода в программировании -- Psychological Warfare in Reverse Engineering, https://youtu.be/HlUe0TUHOIc
  14. Философский взгляд на возможные причины ухудшения качества программ -- The Thirty Million Line Problem, https://youtu.be/kZRE7HIO3vk
  15. Примеры применения data-oriented приемов в программировании и их положительные эффекты -- Writing cache friendly C++, https://www.youtube.com/watch?v=Nz9SiF0QVKY
  16. Лекция, критикующая принципы SOLID с точки зрения обозримых эффектов их применения -- Where Does Bad Code Come From?, https://youtu.be/7YpFGkG-u1w
  17. Исторический экскурс в основы программирования через призму их внедрения в различные языки программирования -- Procedural Programming: It's Back? It Never Went Away, https://youtu.be/eEBOvqMfPoI
  18. Интересная иллюстрация ООП в классическом понимании этого термина -- Moldable development, https://youtu.be/Pot9GnHFOVU
  19. Документальный сериал, показывающий полный цикл разработки игры Psychonauts 2 изнутри -- Double Fine PsychOdyssey, https://youtube.com/playlist?list=PLIhLvue17Sd70y34zh2erWWpMyOnh4UN_

Курсы

  1. Серия видео о том, как компьютеры программируются с нуля -- Build a 65c02-based computer from scratch, https://www.youtube.com/playlist?list=PLowKtXNTBypFbtuVMUVXNR0z1mu7dp7eH
  2. Константин И. Владимиров, С++ для второго курса МФТИ (рус.), https://www.youtube.com/playlist?list=PL3BR09unfgciJ1_K_E914nohpiOiHnpsK
  3. Короткие видео об основах С++ от Яндекса/МФТИ (рус.), https://www.youtube.com/@user-kd3vy7vs8l/playlists
  4. Введение в объектно-оринтированное программирование на С++ (рус.), https://www.youtube.com/watch?v=rZcTaRU7AAw&list=PLQOaTSbfxUtBm7DxblJZShqBQnBAVzlXX
  5. Большой курс высокоуровневого программирования от Amazon, ведет курс автор EOP -- Efficient Programming with Components, https://www.youtube.com/playlist?list=PLHxtyCq_WDLXryyw91lahwdtpZsmo4BGD
  6. Введение в анализ данных в Python -- Тимофей Ф. Хирьянов (МФТИ), Основы программирования и анализа данных на Python (рус.), https://teach-in.ru/course/python-programming-and-data-analysis-basics

И несколько любопытных каналов о программировании:

  1. https://www.youtube.com/@CodeAesthetic/videos
  2. https://www.youtube.com/@Tsoding/videos
  3. https://www.youtube.com/@Reducible/videos
  4. https://www.youtube.com/@denniscosgrove8978/videos
  5. https://www.youtube.com/@simondev758/videos
  6. https://www.youtube.com/@contextfree/videos