Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 3696 07-04-2007 07:36 | |
Ответ на »сообщение 3695« (Илья Ермаков)
___________________________
Да именно тем, что это не "стандартные процедуры", а именно часть языка. Операции, записываемые в префиксной форме со скобками - И ВСЕ. И их использование - это не вызов функции, а просто монолитная часть выражения.
Можно было бы обозначить INC через ++, ASH через <<, ABS через | и т.п. - это было бы то же самое, вот только "стандартными функциями" Вы бы это уже точно не назвали :-)
Думается, это самое простое и точное объяснение.
Я же сделал упор на то, как эти "функции" и "процедуры" реализованы в компиляторе, что, наверное, вызывает лишние вопросы.
Предполагаю, что Вирт не стал вводить дополнительные символы для встроенных операций, в частности, чтобы не разрушить простую и наглядную систему приоритетов (всего 4 уровня, не запутаешься, да и компилятор не позволит :) ).
№ 3695 07-04-2007 07:28 | |
Ответ на »сообщение 3692« (Geniepro)
___________________________
Ответ на »сообщение 3667« (AVC)
___________________________
Просто создатели Хаскелла не стали лукавить, а честно выделили стандартные функции в псевдо модуль с именем Prelude, а вот создатели Оберонов слукавили, вынеся эти стандартные процедуры на уровень языка... Чем же это лучше-то?
Да именно тем, что это не "стандартные процедуры", а именно часть языка. Операции, записываемые в префиксной форме со скобками - И ВСЕ. И их использование - это не вызов функции, а просто монолитная часть выражения.
Можно было бы обозначить INC через ++, ASH через <<, ABS через | и т.п. - это было бы то же самое, вот только "стандартными функциями" Вы бы это уже точно не назвали :-)
№ 3694 07-04-2007 07:24 | |
Ответ на »сообщение 3692« (Geniepro)
___________________________
>>>Что мешает создать транслятор Хаскелла, который точно так же будет встраивать прелюдные функции в машинном коде прямо при компиляции?
Затрудняюсь ответить. Вам виднее.
Возможно, компилятор распухнет от такого обилия встраиваемых функций? :)
А если эти функцию еще поддерживают рекурсию... (А они поддерживают, ведь верно?)
Просто создатели Хаскелла не стали лукавить, а честно выделили стандартные функции в псевдо модуль с именем Prelude, а вот создатели Оберонов слукавили, вынеся эти стандартные процедуры на уровень языка... Чем же это лучше-то?
Всюду, где мы, оберонщики, объявляемся, мы неустанно сеем семена демагогии и лукавства. :)
№ 3693 07-04-2007 07:06 | |
Ответ на »сообщение 3681« (Руслан Богатырев)
___________________________
Разыскал первоисточник (заодно заметил свои неточности в трактовке мысли): это стенограмма панельной дискуссии о концепции расширяемости (extensibility) в языках программирования, которая проходила в 1969 г.
Мысль о делении языков (их авторов) на два лагеря исходила от Дугласа Макилроя -- одного из инициаторов направления extensible programming и идеи промышленого производства программных компонентов (сообщение 2209 из ветки по ФП). Это довольно интересная личность, представитель американской школы программирования (почти 40 лет прослужил в знаменитой Bell Labs). В сфере его профессиональных интересов были следующие языки и языковые средства (весьма характеризует его взгляды): макросы, Lisp, PL/I, TMG (a compiler-compiler), регулярные выражения; Snobol, Altran, C++. Именно он ввел в обращение макросы: M. D. McIlroy, Macro instruction extension of compiler languages (1960).
Итак, выдержка из обещанного протокола.
M.C.Harrison: I want to make two comments and one short commercial. First of
all, a trivial point about the word that we are all using. "Extensibility" smacks too much of "extensive" to me, I prefer extendibility. The second point is that any programming language in which programs and data are
essentially interchangable can be regarded as an extendible language. I think this can be seen very easily from the fact that Lisp has been used as an extendible language for years. Now my commercial: we have a "son of Lisp" extendible language which we have been implementing at New York University over the past few months. This is based on an extendible Lisp system that has vectors and strings. You can do the same sort of thing with vectors as yon can with lists, except that you use square brackets instead of round brackets and you can index the elements. We put a translator on
the front of this to make it look like Algol. I guess it is in the direction of Lisp 2, but the translator takes about two thousand word on the 6600; it is a very simple translator. The programmer can add prefix or infix operators, he can specify left and right precedences of those operators and he can also define macros that are applied to the results of the precedence analysis. Altogether, we can get this Algol-like language with virtually nothing built into the translator except the operator precedences and the macros.
McIlroy: I think that not all the languages we saw today are "sons of Algol".
In fact, l'd very boldly classify their Designers into two categories: the
anarchists and the fascists. We have two anarchists in Irons and Standish; anarchists in the sense that these languages, particularly Irons' language, seem to be devoid of data types, preconceptions about scope, and persistence of data. They have, in some sense, the same capabilities that a computer has naked, before it has been reined in to run as an Algol machine. For extensions which are trivial, but perhaps more desirable to the user, the
fascists (who say "anything you want to do, as long as it's my way, is all right") probably have the edge. For interesting experiments in language, I think I would turn more to the anarchists, who don't have so many preconceptions about how we compute. It is the fascists who are the sons of Algol.
№ 3692 07-04-2007 07:02 | |
Ответ на »сообщение 3667« (AVC)
___________________________
В данном случае Ваша критика не по адресу. :)
Эту путаницу привнес Geniepro, уравняв в статусе библиотечные функции Хаскеля и встроенные функции и процедуры Оберона, код которых встраивается компилятором (вместо ссылки на библиотеку или какой-либо модуль).
А какая разница???
Что мешает создать транслятор Хаскелла, который точно так же будет встраивать прелюдные функции в машинном коде прямо при компиляции?
Просто создатели Хаскелла не стали лукавить, а честно выделили стандартные функции в псевдо модуль с именем Prelude, а вот создатели Оберонов слукавили, вынеся эти стандартные процедуры на уровень языка... Чем же это лучше-то?
№ 3691 07-04-2007 06:47 | |
Ответ на »сообщение 3684« (Сергей Перовский)
___________________________
>>>Я просто подчеркиваю огромную разницу между именованием костыля костылем и квалификацией собеседника как инвалида или... как неисправимого. ;)
Разница невелика. Использование подобных сравнений - хорошо описанный демагогический прием и его употребление в научной дискуссии недопустимо.
Разница -- огромная и принципиальная.
А что касается "приемов", то основной хорошо известен: "Держи вора!" :)
>>>Мы сравниваем комплекты инструментов для работы. Давайте делать сравнения корректно.
Тут приводилось достаточно доводов.
Основные в поддержку квалификации имен:
1) гарантия корректности кода (был пример Свердлова для C#, Trurl поделился историей с перезагрузкой компьютера и т.д.);
2) отражение проектных решений непосредственно в тексте программы.
Вообразите себе чертеж, в котором надо было бы все время щелкать мышкой, чтобы узнать необходимые технические сведения.
Видно также, что во многих языках эти требования не соблюдаются.
По-моему, это было продемонстрировано со всей ясностью.
Средства IDE названы (справедливо!) костылем не потому, что они предоставляют удобства, а потому что не решают эти проблемы, а только их замазывают.
№ 3690 07-04-2007 06:44 | |
сообщение от модератораНастоятельно рекомендую прекратить здесь обсуждение политики, а то ветка быстро превратится в помойку.
№ 3689 Удалено модератором | |
№ 3688 07-04-2007 06:30 | |
Ответ на »сообщение 3684« (Сергей Перовский)
___________________________
Использование подобных сравнений - хорошо описанный демагогический прием и его употребление в научной дискуссии недопустимо.
Простите, но здесь уже Вы допускаете очевидную некорректность. Возможно и непредумышленно. В отношении пресловутых "костылей" ( »сообщение 3633«) я не применял это сравнение ни по отношению к конкретным участникам, ни по отношению к Delphi (подобное "домысливание", думаю, можно вполне трактовать как демагогический прием). Речь шла о любом IDE. Строго говоря, накал со ссылками на Невзорова ( »сообщение 3643«)и акцентированием внимания на персонификации костылей ( »сообщение 3640«) исходил от Вас. Зачем это нужно было в "научной дискуссии", я понять не могу.
№ 3687 07-04-2007 06:17 | |
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|