Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Почему в Обероне нет макросов https://zx.oberon.org/forum/viewtopic.php?f=25&t=211 |
Страница 1 из 1 |
Автор: | Zorko [ 05 июл 2014, 19:10 ] |
Заголовок сообщения: | Почему в Обероне нет макросов |
Сегодня пробежало по рассылке ETH: Paul Reed писал(а): Dear z. >> But it seems to me that even oberon language is not perfect. Sometimes I >> am asking myself why prof. Wirth did not implement macros in his language? ... >> If you have in your program some repeating code like "IF i < 30 THEN n := >> n + 10 END" and this code repeats many times you can obviously... Actually, it seems here you are making a case for procedure inlining, rather than macros. It is worth reading Prof. Wirth's books carefully to discern his views on language design, "optimisation" (of which the above is one), and extensibility, and learn from his pragmatic experience. In particular, Programming in Oberon and Compiler Construction are available as PDFs on his website and are a very rewarding cover-to-cover read in comparison to many much thicker tomes. I think many of your questions may be best answered this way. I remember reading Compiler construction and thinking that the following passage (in section 5.1 in http://www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.pdf) seems to make the case against macros and operator overloading: "Ultimately, the basic idea behind every language is that it should serve as a means for communication. This means that partners must use and understand the same language. Promoting the ease by which a language can be modified and extended may therefore be rather counterproductive." I have extensive experience in commercial situations trying to maintain code that other people have written (in a variety of languages), and I definitely concur with the above observation! Since I read it, I've noticed that I've certainly not been too bothered about macros because the times they could be used to good effect are few, compared with the enormous possibilities for abuse (and the increase in complexity of the tools and environment). Nowadays, I am happy to accept less fancy features in my tools because there's less stuff to "get in my way". Hope that helps, Paul Машинный перевод для тех, кто не дружит с английским: Пол Рид писал(а): Уважаемый г.
> Но мне кажется, что даже Оберон язык не является совершенным. Иногда я > Спрашиваю себя, почему проф. Вирт не реализовали макросы на его языке? ... >> Если у вас есть в вашей программе некоторый повторяющийся код вроде "если я <30 Тогда N: = >> П + 10 END "и этот код повторяется много раз вы, очевидно, ... На самом деле, кажется, здесь вы делаете дело на процедуры встраивания, , а не макросов. Стоит внимательно читать книги профессора Вирта различить свои взгляды на дизайн язык, "оптимизация" (из которых выше является одним), и расширяемость, и узнать из его прагматической опыта. В частности, Программирование в Oberon и Compiler Construction доступны как PDF-файлов на его сайт и очень полезный обложка для чтения по сравнению с многие гораздо более толстые фолианты. Я думаю, что многие ваши вопросы может быть лучше ответил на этот путь. Я помню, как читал строительство компилятора и думая, что следующее проезд (в разделе 5.1 в http://www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.pdf) , кажется, делает дело против макросов и перегрузки операторов: "В конечном счете, основная идея любого языка является то, что она должна служить в качестве средства для связи. Это означает, что партнеры должны использовать и понять на одном языке. Содействие легкость, с которой язык может Поэтому быть изменен и расширен может быть довольно контрпродуктивно ". У меня есть большой опыт работы в коммерческих ситуациях пытаются поддерживать Код, что другие люди написали (в разных языках), и я определенно согласны с выше наблюдения! Так как я прочитал его, я заметил, что я, конечно, не слишком обеспокоен о макросах, потому что раз они могут быть использованы для хорошего эффекта мало, по сравнению с огромными возможностями для злоупотреблений (и увеличением Сложность инструменты и среды). В настоящее время, я рад принять меньше фантазии особенности в моих инструментов, потому что там меньше материала, чтобы "получить в моем путь ". Надежда, что помогает, Пол |
Автор: | Zorko [ 06 июл 2014, 00:53 ] |
Заголовок сообщения: | Re: Почему в Обероне нет макросов |
Jörg Straube писал(а): Hi z.
If you really want that use macro expansion (although not recommended due to possible pifalls), use the C preprocessor on an Oberon file. Let's assume you have a Unix box with C and Oberon installed, you can run the C preprocessor directly without calling the C compiler afterwards by entering cpp test.mod br Jörg |
Автор: | geniepro [ 05 апр 2018, 17:26 ] |
Заголовок сообщения: | Re: Почему в Обероне нет макросов |
Сишный препроцессор -- не лучший выбор, есть куча куда более продвинутых макропроцессоров. Забавна история языка Ratfor (Rational Fortran) -- это язык, сделанный как препроцессор для фортрана. На входе cи-подобный язык, на выходе -- фортран. Но настоящие макросы -- это то, что имеется в таких языка, как Лисп, Схема, Немерл, или даже Шаблонный Хаскелл. Это так называемое квазицитирование, позволяющее создавать синтаксис, более подходящий для какой-либо предметной области, чем просто библиотека процедур. Это и есть метапрограммирование, а вовсе не та работа с метаинформацией о записях, RTTI фактически, которое наши оберонщики выдают за метапрограммирование. |
Автор: | Comdiv [ 05 апр 2018, 18:41 ] |
Заголовок сообщения: | Re: Почему в Обероне нет макросов |
Метапрограммирование многогранно - одно не исключает другого. |
Автор: | ivan_denisov [ 08 апр 2018, 21:10 ] |
Заголовок сообщения: | Re: Почему в Обероне нет макросов |
Вот Babel наверное ближе всего к этому. http://zinnamturm.eu/downloadsAC.htm#Babel |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |