Краткое пособие для начинающих

Курсовая компилятор или почему важно сделать курсач по Компилям от души

 

Качественный Компиль: 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-х человек
  • Весь семестр они не делают ничего
  • Каждый находит свою причину, в основном все работают где-то
  • В последний месяц один решает начать писать код
  • Как правило, ему тоже лень
  • Показывает команде, все говорят – Ооо, мочишь
  • Идут сдавать

Что ж, на носу декабрь и это значит что скоро защита курсачей.

gIDjKZPHhEg

 

Пока ещё не поздно

Сделайте все как раз, два, три.

  • Возьмите упрощенную грамматику MiniJava
  • Напишите простой сканер как в книге Дракона
  • Сделайте простенький парсер
  • Сделайте простенький генератор хотя бы в байткод Java или .NET

Курсовая компилятор по детальным шагам

  1. Компиляторы. Принципы, технологии и инструментарий. http://www.ozon.ru/context/detail/id/3829076/
  2. Классика программирования: алгоритмы, языки, автоматы, компиляторы. Практический подход. http://www.ozon.ru/context/detail/id/2432037/
  3. Engineering a Compiler, Second Edition. http://www.amazon.com/Engineering-Compiler-Second-Edition-Cooper/dp/012088478X/ref=sr_1_2?ie=UTF8&qid=1387062691&sr=8-2&keywords=compiler
  4. Writing Compilers and Interpreters: A Software Engineering Approach. http://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 на то что у вас там и внимательно изучите визуализацию.

 

Picture1

Не так просто достичь цели.


Думаете что это слишком просто…
и программирование это совсем другое, тогда посмотрите это видео, если в нем заменять фразу, "таким сильным" на "крутым программистом" и т.д, то получится подходящий ответ.

 

Если что, то вы всегда можете посоветоваться…
Смотря ролик, меняйте слова "бизнес" на "разработку компиля". И просто советуйтесь со всеми по поводу разработки компилятора.

 

Времени до защиты остается мало…

Распечатайте и повесьте перед монитором.

 

3grEbSc5XwY

 

Comments

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>