Качественный Компиль: Level Up Skills
В чем вы могли прокачаться во время курсача
- Greedy algorithms – сделав register allocation
- Heuristic search techniques – создав list scheduling
- Graph algorithms – реализовав dead-code elimination
- Dynamic programming – разработав instruction selection
- Finite automata and push-down automata – осуществив scanning and parsing
- Fixed-point algorithms – воплотив data-flow analysis
А в чем ещё
- Dynamic allocation
- Synchronization
- Naming
- Locality
- Memory hierarchy management
- Pipeline scheduling.
Качественный Компиль: Систематизация знаний
- Чистый код
- Командная работа
- Программирование
- Структуры данных
- Объектно-ориентированное программирование
- Объектно-ориентированное проектирование
- …
Некачественный курсач: Потраченное время
- Неясные цели
- Запутанная грамматика
- Дрянной сканер
- Мерзский парсер
- Неважная архитектура
- Плохая командная работа
Нет курсача: Вы ничего не теряете
Просто задумайтесь, каких целей вы хотите достичь в программировании.
Все это лишь упущенная прибыль.
Особо прокачанные могли добраться до разработки
- плагина для IDE
- или даже IDE
и это реально.
Но Как обычно происходит процесс
- На повестке дня: Курсовая компилятор
- Собирается команда из 3-х человек
- Весь семестр они не делают ничего
- Каждый находит свою причину, в основном все работают где-то
- В последний месяц один решает начать писать код
- Как правило, ему тоже лень
- Показывает команде, все говорят — Ооо, мочишь
- Идут сдавать
- …
Что ж, на носу декабрь и это значит что скоро защита курсачей.
Пока ещё не поздно
Сделайте все как раз, два, три.
- Возьмите упрощенную грамматику MiniJava
- Напишите простой сканер как в книге Дракона
- Сделайте простенький парсер
- Сделайте простенький генератор хотя бы в байткод Java или .NET
Курсовая компилятор по детальным шагам
- Компиляторы. Принципы, технологии и инструментарий. https://www.ozon.ru/context/detail/id/3829076/
- Классика программирования: алгоритмы, языки, автоматы, компиляторы. Практический подход. https://www.ozon.ru/context/detail/id/2432037/
- Engineering a Compiler, Second Edition. https://www.amazon.com/Engineering-Compiler-Second-Edition-Cooper/dp/012088478X/ref=sr_1_2?ie=UTF8&qid=1387062691&sr=8-2&keywords=compiler
- Writing Compilers and Interpreters: A Software Engineering Approach. https://www.amazon.com/Writing-Compilers-Interpreters-Software-Engineering/dp/0470177071/ref=sr_1_4?ie=UTF8&qid=1387062691&sr=8-4&keywords=compiler
PS.
Если делать по книжкам, то там аж 4 готовых компиля. Для команды из 3-х человек, это путь к созданию хорошего компиля аж для 12-ти человек. А если ещё добавить или усилить фичи то можно смело умножить на 2, и получить минимум 24 человека, успешно сдавших курсач.
Все ещё что-то останавливает?
Замените фразы INTERNET и LIFE GOALS на то что у вас там и внимательно изучите визуализацию.
Не так просто достичь цели.
Думаете что это слишком просто…
и программирование это совсем другое, тогда посмотрите это видео, если в нем заменять фразу, "таким сильным" на "крутым программистом" и т.д, то получится подходящий ответ.
https://www.youtube.com/watch?v=KhBOk8Ry0sg
Если что, то вы всегда можете посоветоваться…
Смотря ролик, меняйте слова "бизнес" на "разработку компиля". И просто советуйтесь со всеми по поводу разработки компилятора.
Времени до защиты остается мало…
Распечатайте и повесьте перед монитором.
Comments