Проекты на PascalABC.NET


#109

Сделал учебный образец транслятора с pas на CIL. Ну так быстро, конечно что-то полноценное сделать было нельзя, поэтому транслятор транслирует только объявления некоторых переменных и вызов опять же некоторых функций. Но тем не менее некие общие принципы работы компилятора на .NET можно увидеть. Ссылка


#110

Ээ нуу… Это конечно интересно, но ведь PascalABC.Net уже делает это, при чём полноценно. Полученный IL-код можно посмотреть любым декомпилятором для C#, я использую DotPeek.


#111

Но вот разобраться в его исходниках могут только избранные :wink:


#112
  • и главное исходник написан не на PascalABC.Net , то есть кому надо понять общие принципы работы компиляторов должне получается учить какие-то другие языки.

#113

C# очень похож на PascalABC.Net, все те же принципы работают и там. Уметь писать на C# не обязательно чтоб понимать код на нём.

Но вот зато объём кода - я уже давно слежу за исправлениями багов, то есть какие правки в коде исправляют какую проблему. И всё ещё мало понимаю, так там много терминов.


#114

Всё-таки C# и Паскаль - это разные языки. А Microsoft C# и PascalABC.Net, разные среды разработки.

  1. Далеко не факт, что такой большой и объёмный проект, как компилятор может быть вообще правильно откомпилирован и доведён до exeшника в PascalABC.Net . Пока приведённые выше примеры - это достаточно небольшие программы.

  2. Дайте любому школьнику без подготовки хотя бы простую программу на C#, естественно он её не сможет переписать на паскале. Поэтому примеры на C# не годятся для обучения Паскалю , по моему это очевидно.


VKAPI PascalABC.NET Wrapper
#115

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


#116

А как может быть иначе?

А с чего Вы вообще решили, что он знает именно PascalABC.NET, а не Delphi или C#? Написание компилятора на PascalABC.NET как самоцель - глупость. Компилятор работать будет, но вот синтаксис языка, вероятнее всего, будет не очень. При написании проекта надо ориентироваться на ту платформу/язык, который удобен Вам, а не тот который популярен/рекомендован. Если задача стояла показать простой пример компилятора, то я Вас поздравляю, Вы отлично справились. :slight_smile:


#117

А можно узнать, на каком основании Вы делаете такое предположение?

Ну т.е. когда Н.Вирт реализовал свой компилятор с Паскаля на Паскале, синтаксис “был не очень”? А народ-то и не знал, только нахваливал, какой удачный получился язык…


#118

-А что есть примеры написания на PascalABC.Net больших проектов в 10 - 20 тыс. строчек кода? Хотя бы одного? Нет, я понимаю в теории должно что работать но на практике, когда масштабные проекты создаются, могут оказаться проблемы.

-Ну я понимаю ситуацию PascalABC.Net имеет сейчас основное предназначение, как учебный язык. Следовательно есть кто-то, кто знает именно его и пока не изучил остальные.

  • вот я и боюсь, что возможно даже для разработчиков их собственный проект (пока) не самая удобная платформа :frowning:
  • Да, конечно задача именно такая и была. И на самом деле там ещё надо приводить в приличный вид надо, чтобы не стыдно было школьникам показывать. Например, использовать процедуры , а не в один Main всё пилить + обучить программу обрабатывать “procedure”. И какой-нибудь примитивный обработчик ошибок вставить.

#119
  • вот я о том же . Вирту было удобно делать компилятор именно на своём же Паскале.

#120

Сам Н.Вирт объясняет это иначе. На ЭВМ, с которой он работал, были компиляторы только ассемблера и Фортрана. А когда он придумывал язык, взял синтаксис от языка Алгол и несколько фортрановских идей. В сторону С он не стал даже смотреть, потому что уже тогда про синтаксис С говорили, что сначала слепили язык, а потом для него написали синтаксис.


#121

Я имел ввиду не конкретно Паскаль. Если цель реализации проекта - сделать на конкретном языке, то основное внимание уделяется коду, а не сути проекта. Особенно, если язык не знакомый.


#122

А какая разница? Если мы имеем универсальный алгоритмический язык, на нем можно реализовать все. А если не все, то язык не универсальный…


#123

При чём здесь это?


#124

При том, что можно реализовать язык любой сложности и с любым синтаксисом. Поэтому Ваше “синтаксис не очень” - ну, я не могу понять причины такого заявления.


#125
  • насколько я помню Паскаль был создан в 1969 году, а C в 1973 , так что Вирт не мог писать компилятор Паскаля на Си, даже если бы захотел.

#126

Повторяю в n+1 раз. Если проект делается на конкретном языке (т.е. цель - не сам проект, а его язык), то внимание будет больше привлечено кодом, чем содержанием.


#127

@Andrej_Rulin не пишите ничего на строчке с [/quote], это ломает цитаты.


#128

Sun_Serega -ага, спасибо, исправил.