Тема открыта по просьбе жителей Королевства и посвящена обсуждению вопросов оптимизации кода. Выставляйте свои лучшие и худшие тексты и не стесняйтесь их обсуждать. В споре рождается истина. Или, по крайней мере, оптимизация.
Всего в теме 737 сообщений
Добавить свое сообщение
Отслеживать это обсуждение 
- Тестирование проекта. Отладка.
- Подводные камни
- Централизованная обработка ошибок
- Бета-тестирование
- Давайте учиться на ошибках.
- Почему программисты допускают ошибки?
- Автоматизированные тесты для GUI
- О системах контроля ошибок
№ 257 05-09-2005 03:26 |  |
Ответ на »сообщение 256« (Geo)
___________________________
Пример сплошного непонимания двух спорящих сторон. Речь идет, естественно, о компиляторе.
Так речь то шла в первую очередь о инструментальных средах, а отнюдь не о компиляторах.
№ 256 05-09-2005 00:40 |  |
>>> Ну так и на чем они написаны?
На Ассемблере... Гы! Шутка :-)
Пример сплошного непонимания двух спорящих сторон. Речь идет, естественно, о компиляторе. Другая сторона имела в виду, что, конечно, можно написать компилятор на том языке, для которого этот компилятор создается. Но вот откомпилировать будет не на чем :-) Соответственно, какая-то часть нового средства должна быть создана с помощью предыдущих средств.
Спасибо Руслану Богатыреву: про раскрутку компиляторов. Я этого не знал. Хотя и в этом случае что-то (компилятор усеченной версии) придется писать с помощью других инструментальных средств.
№ 255 05-09-2005 00:28 |  |
Ответ на »сообщение 250« (Manson)
___________________________
Ответ на »сообщение 253« (J.K.J.)
___________________________
Delphi 1 была написана на Delphi 1. В 90-е гг. это был довольно-таки общеизвестный факт. Единственное, что там было написано не на самой Delphi, это естественно, компилятор. Но, видимо, современная молодежь совсем не любит учить историю :-(
Кроме того, если внимательно посмотреть на Delphi 3, то становится понятно, что ее нельзя разработать на Delphi 2. Так же, как впрочем, и Delphi 2 нельзя было написать на Delphi 1. Ну так и на чем они написаны?
№ 254 04-09-2005 14:00 |  |
Небольшая справка по проблеме 'курицы и яйца' для компиляторов.
В области разработки компиляторов есть такое понятие bootstrapping ('раскрутка'). Этот подход, предложенный еще в 1958 г., применяется в тех случаях, когда требуется получить компилятор языка, написанный на самом языке (для технологической независимости и задач переносимости).
Когда изначально нет компилятора с входного языка S (от source) на целевой язык T (target) и написанного на языке реализации I (implementation), действуют в несколько этапов: сначала создают компилятор для усеченного варианта языка, а затем постепенно доводят компилятор до нужного уровня.
Для описания этой цепочки используют специальные диаграммы в виде буквы T, где в основании указан язык I, слева -- язык S, а справа -- T, т.е. вида S<I>T. Их используют как конструктор LEGO для описания схемы преобразования. Подробнее об этом см. классическую книгу Ахо и Ульмана 'Компиляторы: принципы, технологии и инструменты' (1985, пер. на русский -- 2001 г.).
Существует устойчивый стереотип в отношении того, что первый компилятор Паскаля был написан на самом Паскале.
Это не так. Никлаус Вирт в 1969 г. поручил эту задачу своему ученику Эдуарду Мармье (Eduard Marmier). Поскольку тот владел лишь Фортраном, то первый компилятор и был реализован именно на нем (с генерацией кода для американского мэйнфрейма CDC 6000 фирмы Control Data Corp.). Как вспоминал впоследствии Вирт в 1993 г., неадекватность Фортрана для описания структур данных компилятора потребовала практически полного перепроектирования последующего компилятора Паскаля. Вирт считает, что выбор Фортрана для реализации стал серьезной ошибкой. Работа была в корзину.
Вторая попытка реализации компилятора Паскаля была предпринята в 1970 г. На этот раз компилятор писали на самом Паскале (упрощенная версия). Его делали аспиранты Вирта: Рудольф Шилд (Rudolf Schild), Урс Амманн (Urs Ammann) и все тот же Эдуард Мармье. После того, как работа была сделана, Шилд за две недели у себя дома вручную перевел программу в низкоуровневый язык, доступный на CDC 6000. Раскрутка компилятора началась. К лету 1970 г. компилятор был закончен.
Детали реализации компилятора Паскаля для CDC 6000 изложены в малоизвестном препринте Вирта 'On PASCAL, Code Generation, and the CDC 6000 Computer' (февраль 1972 г.), хранящемся в архивах Стэнфордского университета.
Уже после того, как второй компилятор Паскаля был готов, Вирт пришел к идее реализации компилятора Pascal-P, который генерировал код для абстрактной стековой машины (знаменитый теперь P-код).
В первой половине 1971 г. проф. Хоар (Charles Hoare) вместе со своими коллегами из Queen’s University в Белфасте (Хоар переехал в Оксфорд только в 1977 г.) осуществлял раскрутку Паскаль-компилятора для английского компьютера ICL-1900.
Для краткого введения в проблематику рекомендую посмотреть статьи
1. Никлаус Вирт 'Проектирование системы с нуля' // Structured Programming, 01/1989.
http://www.uni-vologda.ac.ru/oberon/infoart/proj0.htm
2. Андрей Хохлов 'Простой компилятор' // Мир ПК, 05/2005.
http://www.osp.ru/pcworld/2005/05/068.htm
№ 253 04-09-2005 07:31 |  |
>>>Delphi. Учите историю.
Здорово!
Значит самый ПЕРВЫЙ Delphi был написан на Delphi.
Надо рассказать об этом Борланду - пусть посмеются.
№ 252 04-09-2005 07:29 |  |
>>>на паскале можно написать паскаль.
Только в том случае, когда у Вас уже есть хотя бы один паскаль. А когда у Вас еще нет ни одного паскаля, то написать паскаль на еще не существующем паскале не получится. Если, конечно, Вы не чародей.
Manson прав в главном. Нельзя написать что-то на том, что еще не существует. В ПЕРВЫЙ раз это "что-то" можно написать только на том, что уже написано, т.е. на чем-то другом.
№ 251 03-09-2005 13:53 |  |
на ассемблере можно написать паскаль
на паскале можно написать ассемблер.
на паскале можно написать паскаль.
лисп был придуман как альтернатива машины тьюринга для теоретизирований по поводу вычислимости, и в качестве одних из такаих теоретихирований была придумана функция eval, которая интерпретировала программу на лиспе.
...
S.R. Russell noticed that eval could serve as an interpreter for LISP, promptly hand coded it, and we now had a programming language with an interpreter.
...
ключевые слова: тьюринг-эквивалентность, теорема чёрча.
http://www-formal.stanford.edu/jmc/history/lisp/node3.html
№ 250 03-09-2005 05:58 |  |
>>>Delphi. Учите историю.
Delphi 7 создана при помощи Delphi 7 :))))))))
Учите логику :o).
№ 249 03-09-2005 00:56 |  |
Ответ на »сообщение 248« (Manson)
___________________________
Если можете, то приведите хотя бы один пример программы, которая была создана путем использования САМОЙ СЕБЯ в качестве инструментального средства.
Delphi. Учите историю.
№ 248 02-09-2005 13:02 |  |
>>>Ответ на »сообщение 243« (Manson)
>>>Вы, наверное, тоже не до конца поняли мысль....
>>>Именно!
>>>А теперь представь, что можено собрать воедино
>>>Erwin, Visio, UML, OP, SQL, PL/SQL и т.п. в
>>>один дизайнер. В котором один раз сказал про
>>>отношение одной сущности к другой как один ко
>>>многим, и он тебе создал и БД с соотв.
>>>констреинтами и VIEW с процедурами
>>>редактирования наваял, и формочку визуального
>>>представления сделал... Фантастично? В общем-
>>>то нет.
Вы хотите сказать, что Erwin, Visio, UML, OP, SQL, PL/SQL были созданы при помощи этого замечательного дизайнера?
Если нет, то Вы полностью согласны с моей точкой зрения, хотя и отрицаете это. Единственное, что я хотел донести до Вас: инструмент нельзя создать при помощи самого себя. Если можете, то приведите хотя бы один пример программы, которая была создана путем использования САМОЙ СЕБЯ в качестве инструментального средства. Если не сможете, то не надо больше выяснять, кто тут и что понял не до конца :).
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|