Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
Угу, назовите хоть один ? Лично я не знаю. Слово против слова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:35 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
да хоть тикль :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:45 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
Поймали, не помню как он работает. Но сомнительно, что он каждый раз парсит каждую строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:46 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
для меня "интерпретатор" значит следующее: исходник где строка 1- синтаксически правильна, а вторая - нет частично работает Код: plaintext 1. fff выводится а дальше -ошибка. Думаю, компиляторы p-кода должны сразу ругнуться. Вот python или perl в такой ситуации действительно выдадут ошибку сразу (видимо, во время пресловутой компиляции бинарного кода) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:51 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
в целом логично :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 11:18 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
softwarer Постараюсь донести свою мысль максимально аккуратно. Итак, если у нас есть эквивалентные оператор WRITEFILE и функция WriteFile, второе представляется мне более удачным решением, поскольку это "отъемлимая", если можно так выразиться, часть языка, часть, объективно склонная к изменениям; У паскаля та же проблема что и у фортрана. Тут С со своими библиотеками скорее исключение, а не правило. У оригинального - безусловно. И от этого быстро стали уходить. Подход Си на тот период, безусловно, был на голову впереди прочих. Цикл while(предикат){...} полностью эквивалентен цииклу for(;предикат;){...}. Даже символов получается одинаковое количество. Поэтому я не понимаю что в данном случае дает введение дополнительного оператора в язык, никакого выигрыша в смысле лаконичности не получается. OK. Давайте считать, что я вижу. Да, но эти кирпичики жрут основное время счета. Их удобно писать на фортране. Операторы switch это в большинстве логика работы программы (это нестрого), но в рассчетах они встречаются редко. Логику нужно писать, например, на С. Когда связка фортрана с С была проблемой, все писалось на одном языке, по-видимому поэтому в Вашем примере в фортране встречалось много конструкций эквивалентных switch. Признаться, не вижу смысла по столь мелкому поводу разводить зоопарк языков. Сгладили только в С и всем что от него пошло, типа джавы, пошарпаного С, С++ и пр. Отнюдь. Вы снова выдвигаете аргумент в стиле "потому что называется одинаково". Я все же предлагаю смотреть глубже; иначе придется, например, считать, что Рапира не имеет ничего общего с Фокалом (или из чего там ее сотворили), а Фотон - с Multi Edit-ом. Я говорил о ручном программировании, ясно что правильный конвертор все проконвертит правильно, но я думаю о себе. Ошибка основная, если ее убрать то С станет вполне даже приличным языком. По большому счету она уже давно убрана :) softwarer В ручном кодировании, безусловно, об этом нужно помнить, но здесь у каждого языка свои фокусы - вспомним, например, классический фортрановский прикол с изменением значения константы. Освобождение памяти более серьезная ошибка и более часто встречающаяся. А что там с изменение констаны, это оператор DATA? Замечательная логика - "не понял, о чем идет речь, но сишная все равно чаще". Нет, это не оператор DATA - тот работает вполне предсказуемо. Это следующий прикол: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Я константы всегда объявлял константы как parameter, вроде поменять нельзя, но возможно ошибаюсь. Но это поздние версии фортрана. softwarer c127GOTO неудобно, согласен, для выхода из цикла в поздних версиях фортрана был введен оператор типа break. Это утверждение выглядит странно, если сопоставить его с более ранним "я бы оставил в Си только FOR, убрав WHILE". Речь шла только о сишном for, он эквивалентен while, в фортране, паскале while нужен, там цикл его не заменяет. И что? BREAK эквивалентен GOTO; по той же самой логике он в фортране не нужен. Да и в остальных языках тоже. softwarer BREAK - это одна из форм оператора GOTO. Всей разницы - экономия нескольких символов на метке. Это ровно такая же приятная мелочь, синтаксическое удобство, как и сишный цикл while. GOTO запутывает оптимизатор, оптимизатор не знает куда будет переход. BREAK учесть легче, это частный случай GOTO. Насколько я готов утверждать без доставания книги по оптимизации - никакой разницы. В любом случае анализируется граф переходов. Та же история что и с циклами, чем более общий случай тем труднее его оптимизировать. Отнюдь не та же. У упомянутых циклов - разные возможности. break и goto - близнецы-братья. Если не ошибаюсь на момент создания фортрана структурного программирования не было и близко. Хм. Знаете, я пожалуй завершу этим письмом наше обсуждение. Вы зачем-то ведете в сторону "я защищаю язык, на который софтварер нападает". Когда концепция появилась фортран подрехтовали, теперь на нем легко можно программировать структурно без GOTO. Для этого потребовалось 3 оператора: switch, while, break. Не так много. Во-первых, прошу таки помнить, что "структурно" и "без GOTO" - абсолютно разные вещи. Не составляет ни малейшей проблемы написать классический спагетти-код без единого GOTO. Во-вторых, я так понимаю, что в каких-то из новых версий недостаточность управляющих конструкций таки исправили. Это, безусловно, хорошо, и это же доказывает, что она была. softwarer Еще раз: цикл с переменным шагом . Примерно так: Код: plaintext Вот и попробуйте соптимизировать такой цикл. Компилятор вообще не знает что там происходит. По этой причине вообще циклы не оптимизирует на всякий случай. Шучу конечно, но доля правды есть. Не уходите в сторону. "Доля правды" есть в том, что цикла DO не хватит для реализации такого цикла, соответственно его возможностей недостаточно для типичной, подчеркиваю, задачи численных вычислений. Другая доля правды - такой цикл тем не менее можно оптимизить, а вот его же реализацию через IF/GOTO - можно, наверное, но сомневаюсь, что писали столь развитую логику. А в фортране цикл определяется таким образом, что на момент входа в цикл программа знает сколько раз он будет выполняться. Единственный способ прервать - опрератор break, который в языке появился. А goto компилятор запутывает, его использовать в этой ситуации не рекомендуется. И для которого из циклов легче написать оптимизатор по-Вашему? На самом деле одинаково. Оптимизация цикла, если грубо, распадается на две группы: во-первых, преобразования, связанные со структурой цикла (например, вынесение константных операций), во-вторых, преобразования, связанные с вариантом цикла (раскрытие цикла, индуктивные переходы, изменение порядка обхода на нисходящий итп). Итого, разница только в выделении вариан(ов) цикла. Неустранимой причины конечно же нет, все работаем на одной и той же машине Поста, но вот технические есть. Как результат в книгах по фортрану (например в книге "Оптимизация в фортране", автора не помню, книги нет под рукой) советовалось не выносить повторяющиеся вычисления из цикла с целью оптимизации, поскольку компилятор их найдет и вынесет сам и сделает это лучше, а вот компиляторы по С вроде очень часто не выносят и вычисляют каждый раз. Хм. "Очень часто" зарождает подозрение, что идет сравнение с "обычным стиральным порошком", а хороший таки будет не хуже. Трудно говорить о книге, которую в глаза не видел, но абстрактно можно отметить следующий факт: вынесение повторяющихся вычислений - преобразование, которое абсолютно не зависит от структуры цикла. От структуры цикла зависят индуктивные преобразования, но как раз в этом месте для C очень старались сделать эффективную оптимизацию. softwarerНе очень вижу, за счет чего встроенный тип комплексных чисел будет оптимизиться сильно лучше, чем пользовательский, но и не решусь возражать. А что тут смотреть, в С типа complex нет. А в математических библиотеках для него - 100% есть. Точно так же, как и с файлами. А лучше за счет того что: 1) программа где complex нужен получается компактнее, C какой стати? Это еще можно было бы сказать об оригинальном, "системном" Си, но не о языке "прикладного периода". 2) библиотеки оптимизирует производитель компилятора а не я, Лучше, если оптимизирует производитель библиотеки. А производитель компилятора сосредотачивается на оптимизации компилятора :) с127Согласен, маркетинг штука страшная. Но во времена господства фортрана такой маркетинге никому не мог и присниться. Я бы сказал, это чистой воды везение :) К тому же так оказалось что С гораздо ближе к универсальному языку чем фортран, хоть и создавался совсем с другими целями. Мне он очень нравится. Если еще утечку памяти побороть, то вообще бы все было хорошо. Но как всякое универсальное средство С проигрывает специальным в их узких областях. с127 softwarerВашу мысль стоит представить в табличном виде. Есть Это была шутка, типа Ваша логика, доведенная до абсурда. А с какого бока это была "моя" логика? Мой оппонент пошел сравнивать по дико формальным признаком. Если не ошибаюсь, где-то у меня мелькнула фраза: "Вы еще скажите, что называются одинаково". И вдруг выясняется, что это моя логика.. softwarer И кстати - почему именно на Паскаль? В Си цикл тоже называется FOR. Потому что в С цикл for это нечто сложное, а у всех остальных - простое.[/quot] Цикл FOR в бейсике много сложнее, чем в Паскале - он позволяет произвольный шаг, позволяет работать с вещественными переменными...... И что же это в цикле у паскаля такое, что не умеет фортрановский цикл? Код: plaintext Опять речь о терминологии. Ладно, пусть нет подпрограмм, тогда это делает бейсик еще менее похожим на фортран. В этом случае "нет подпрограмм" - уникальная особенность "того" бейсика. Как, впрочем, и "нет формальных параметров" :) Да, это различие. У любого языка есть различия с любым другим, даже если они очень похожи. softwarer Цикл есть цикл, даже если он записывается как goto, от этого ничего не меняется. А если нет формальных параметров это все, их ничто не заменяет. Да бросьте. Точно так же заменяется. Это технически, а с точки зрения логики и понимания это существенная разница. Параметры это следующий после подпрограмм типа GOSUB шаг в абстрактном мышлении. Абсолютно те же слова можно сказать и про цикл. Но отмечу, что параметры - это не "следующий", а "тот же" шаг в мышлении. Альтернатива - сказать, что половину расстояния между концепциями "отрезка" и "треугольника" можно пройти, поставив на отрезок точку и назвав получившееся вырожденным треугольником. Не знаю как оно было изначально, но в фортране 77 уже можно было по-моему. По моим воспоминаниям, в Fortran IV номера файлов были "магическими числами". То есть в операторе ввода-вывода просто писалась константа и ничего другого сделать было нельзя. Почему я и выделил этот момент в сравнении с бейсиком, где по крайней мере в середине восьмидесятых еще было так же (сейчас, наверное, все же сделали нормально - не знаю). softwarer Хм. Возможно, я неправильно понимаю смысл "процедурного" языка. В том, на что Вы отвечаете, названы ALGOL, PL/I, Pascal, С. Кто из них менее процедурен, чем бейсик, и почему? Все одинаково процедурны. А вот ЛИСП и АПЛ (по-моему), которые Вы вспоминали, не процедурные. Я их вспоминал в другом контексте и по другому поводу. Но на момент придумывания бейсика (середина 60-х) 1) паскаля не было, Не было. 2) у алгола были проблемы с комрилятором, либо же компилятора не было вообще, точно не помню, Хм. Не очень понимаю, о каких проблемах идет речь. В силу некоторых особенностей языка компиляторы Алгола были очень сложны в сравнении с современниками - насколько я помню, среди прочего Дейкстра доказал, что для ALGOL-64 теоретически невозможно сделать менее чем четырехпроходный компилятор. Но тем не менее по практическому использованию, они с Фортраном - ровестники. 3) ПЛ/1 не знаю был ли, может тоже не было. Был. Появился несколько раньше бейсика. Чтоб не ходить по кругу в вопросе о бейсике как наследнике фортрана предлагаю определиться. Я считаю что чтобы язык программирования D назвать наследником языка F необходимо выполнение двух условий: 1) авторы языка должны в явном виде заявить что D создавался на основе F 2) в момент создания D должен быть нацелен на решение тех же задач что и F Хм. А Вы сможете назвать хотя бы одну пару из основных языков (не диалектов), для которых выполнятся оба этих условия? Соглашусь, в такой постановке вопроса говорить о наследовании практически бессмысленно. Вывести Perl из какого-нибудь другого шелловского языка наверное еще получится, но не более того. Собственно, в такой постановке вопроса окажется непросто даже вывести Delphi как наследник Turbo Pascal-я :) Поэтому бейсик НАСЛЕДНИКОМ фортрана назвать нельзя. Его можно назвать потомком, ответвлением, но не наследником. Браво! Замечательно. Теперь позволю себе процитировать то утверждение четырехстраничной давности, с которого все началось, на которое и пошли ваши возражения: softwarerФортран - предок бейсика, первый из проектов ряда "давайте программировать без программистов" И вдруг, после стольких сломанных копий, оказывается, что с этим Вы и не спорите - Фортран предок, бейсик - потомок. Не нравится же Вам слово "наследник", вылезшее уже в середине обсуждения (на четвертой странице). Если говорить о лишних и неудачных конструкциях в фортране, то они наверняка есть. Но все познается в сравнении, если посмотреть на другие языки, то там их как правило несравнимо больше, если фортран тут как-то выделяется, то только в лучшую сторону по-моему. И снова начинается флейм на тему "лучше-хуже". Нет, я таки завершаю эту беседу, тем более что как вдруг оказалось, Вы соглашаетесь с тем, о чем мы вроде бы начали спорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:21 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
tchingizВаше утверждение было безусловным "отовсюду", а в примере условие. "Отовсюду в рамках того, что умеет язык". Этак и для бейсика можно сказать, что не отовсюду - можно подключить к бейсик-программе внешнюю подпрограмму на другом языке, но вот достучаться из той до бейсиковских переменных будет непросто. tchingiz2 и даже в Вашем примере. если разместить глобальную переменную внизу файла, чтото мне подсказывает, что ее не будет видно "ниоткуда" Будьте аккуратнее. Я сказал "бейсиковским образом". В бейсике в этом случае ее тоже не будет "видно неоткуда", только порядок идет не по сортировке строк, а по порядку их выполнения. Опять же, особенности языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 13:10 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
лыко в строкудля меня "интерпретатор" значит следующее: исходник где строка 1- синтаксически правильна, а вторая - нет частично работает Хм. Признаться, не готов разделить такое определение - все же я бы сказал, критерием является наличие собственной среды исполнения, "исполняемый код уровня выше машинного". Как косвенный признак - наличие функции eval(), возможность на ходу отпарсить и выполнить какой-то переданный код. В противном случае из интерпретаторов пришлось бы исключить, например LISP. Ну и кучу того, что обычно таковыми называется - PL/SQL, например. fff выводится а дальше -ошибка. С другой стороны, сказанное - практически ничего не говорит. Согласитесь, нет проблемы написать компилятор, который будет удовлетворять этому критерию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 13:47 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
softwarerС другой стороны, сказанное - практически ничего не говорит. Согласитесь, нет проблемы написать компилятор, который будет удовлетворять этому критерию :) Вообще да. Но это народный способ :-). И никак не определение. Конечно он прокалывается - например Visual Basic так себы ведет, хотя он вроде уже нифига не интерпретатор. Кстати, наличие функции eval() - ни о чем не говорит. Она есть в том же perl, python etc. Это просто встроенный интерпретатор, ну его можно встроить и в сишную программу и в какую угодно - думаю Вы прекрасно об этом осведомлены :-) А PL/SQL кстати интерпретатор? Я Oracl не знаю, но в MS SQL/Sybase говорят "я перекомпилировал процедуру", "преимущество процедур в скорости - в том, что они на сервере прекомпилированные". У Саукапа написано, как происходит работа с процедурами Transact SQL, там вроде как действительно интерпретируются они а потом уже компиленные. Наверное PL/SQL так же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 16:33 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
В 9-ке появилась возможность компиляции PL/SQL в native код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 16:54 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
лыко в строкуКстати, наличие функции eval() - ни о чем не говорит. Она есть в том же perl, python etc. А с каких пор они перестали быть интерпретаторами? :) Хотя про python не уверен - мало знаю. лыко в строкуЭто просто встроенный интерпретатор, Да. При этом, если доступен тот же самый язык, что и "снаружи" - обычно это тот же самый интерпретатор и есть :) лыко в строкуну его можно встроить и в сишную программу и в какую угодно - думаю Вы прекрасно об этом осведомлены :-) Безусловно, можно. Но "встроенные" интепретаторы обычно принципиально менее функциональны. Сишная программа, в которую встроен полный интерпретатор Си, к тому же способный взаимодействовать с внешней программой - мягко говоря, нечастое извращение :) Впрочем, как я сказал, это именно косвенный признак. лыко в строкуА PL/SQL кстати интерпретатор? Я Oracl не знаю, но в MS SQL/Sybase говорят "я перекомпилировал процедуру", "преимущество процедур в скорости - в том, что они на сервере прекомпилированные". Интерпретируется промежуточный код. Точнее, есть два варианта: более старый - такой вот интерпретатор, более новый - компиляция в выполняемый код. лыко в строкуУ Саукапа написано, как происходит работа с процедурами Transact SQL, там вроде как действительно интерпретируются они а потом уже компиленные. Наверное PL/SQL так же? Боюсь, не понял фразы и не знаю автора. Насколько я в курсе, в T-SQL схема примерно та же с той разницей, что при компиляции строятся планы запросов, а в оракле это делается при выполнении процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 17:37 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
softwarerХотя про python не уверен - мало знаю. Псевдокомпилятор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 17:53 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
разумеется я вел речь не о компиляторах в машкод, а о компиляторах в p-код, байт-код или как там его называют. О них именно говорил господин Gluk (Kazan). (псевдокомпиляторы, генераторы байт-кода или что-то в этом роде.) perl как известно сначала делает бинарный код (машинный), а потом его исполняет. Только этого кода никогда никто не видел ибо в памяти он. Так что он совсем не интерпретатор. А вот python - вполне можно все кроме головного модуля компилить в *.pyc метод compiler.compileFile и другие. Такой же принцип создания байт-кода, что и в java. Да и .NET это тот же путь. Компилятор C# - это компилятор? :-) На самом деле и с tcl я немного слукавил - в какой-то новейшей версии (9?) и его хотели перевести на byte-code, но получилось ли у них что-то неизвестно. У него как-то развитие притормозилось к счастью. И Perl 6 говорят таким будет [испортят хорошую вещь (c) :-(] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 19:06 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
лыко в строкуperl как известно сначала делает бинарный код (машинный), а потом его исполняет. Только этого кода никогда никто не видел ибо в памяти он. Так что он совсем не интерпретатор. Этот вариант я бы как раз назвал чистым интерпретатором. То, во что он преобразует глубоко внутри себя - его внутреннее же дело. Черный ящик, на входе которого - исходный текст, на выходе - выполняющаяся программа. Можно сказать, что это "интерпретатор, содержащий встроенный компилятор". Что, впрочем, за исключением генератора исполняемого кода есть абсолютно стандартный вариант. Также можно сказать, что по "требованиям к языку", ограничениям, легкости реализации каких-то фич этот продукт должен быть ближе именно к "стопроцентным компиляторам". лыко в строкуТакой же принцип создания байт-кода, что и в java. Да и .NET это тот же путь. Компилятор C# - это компилятор? :-) Если говорить о java, то это интерпретирующая среда исполнения (которая собственно называется java) в сочетании с выделенным в отдельный инструмент компилятором в байт-код (который называется javac). В принципе о такой конструкции можно говорить как о гибриде. С моей точки зрения, о "java в целом" правильнее говорить как об интерпретаторе потому, что байт-код вообще говоря произволен; так, даже самые интерпретирующие интерпретаторы не парсят каждый раз строку (если не говорить об... экстремальных поделках), но переводят ее во внутреннее представление (пусть и эквивалентное исходному - просто короткая запись). Соглашусь, что на определенном уровне обсуждения стоит выделить подобные гибриды в отдельный класс. Правда, тогда опустеет класс "собственно интерпретаторов", и соответственно утверждение, с которого все пошло - "все интерпретаторы позволяют не объявлять переменные" - теряет смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 19:32 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
в принципе "гибриды" ближе к компиляторам- просто они генерят код не для реальных процессоров, а для софтверных (виртуальных). Которые к тому же имеют шанс воплотиться и в железе (вроде для Java делали). Про perl не соглашусь - он именно компилирует , просто для пользователя это выглядт как интерпретация в том плане что он глотает сорц и сразу отрабатывает. Процесс компиляции у него скрыт "под капотом". Вы же не назвали бы компилятором такую систему: Код: plaintext у нее такое же поведение, как у perl - мы создаем исходник, запускаем и получаем результат работы. Просто она промежуточный бинарный код хранит в виде файла. Ну и синтаксис другой - но это ведь детали :-) IMHO истинный интерпретатор - тот, который берет строчку кода, исполняет и переходит к следующей и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 19:44 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
Вы же не назвали бы компилятором такую систему заменить на Вы же не назвали бы интерпретатором такую систему ----- лыко в строку уже лыка не вяжет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 19:57 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
Можно и процессор считать интерпретатором нативного кода. В таком ракурсе, разговоры о преимуществах нативного кода - чистой воды гегемония. По поводу байт-кода. Ну... он возник задолго до Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 20:06 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
авторПо поводу байт-кода. Ну... он возник задолго до Java. никто не спорит :-) Думается, все же интерпретация - построчный разбор и выполнение кода языка высокого уровня, можем отталкиваться от этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 20:09 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
лыко в строку Думается, все же интерпретация - построчный разбор и выполнение кода языка высокого уровня, можем отталкиваться от этого? Во всех ли языках можно выделить строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 20:12 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
Согласен, давайте закругляться, спор уже давно стал неконструктивным. Пара замечаний. Абсолютно всякий язык высокого уровня создавался именно для того чтоб могла программировать домохозяйка, т.е. по Вашей классификации человек, не знающий конкретной архитектуры машины ("давайте программировать без программистов"). В этом смысле пара бейсик - фортран абсолютно ничем существенным не выделяется. softwarer Поэтому бейсик НАСЛЕДНИКОМ фортрана назвать нельзя. Его можно назвать потомком, ответвлением, но не наследником. Браво! Замечательно. Теперь позволю себе процитировать то утверждение четырехстраничной давности, с которого все началось, на которое и пошли ваши возражения: Ну Вы же сами заговорили о наследнике ( Я не очень понимаю Вашей точки зрения "раз наследник - значит, должен быть шире" 6 сен 05, 11:19 [1849310]). Но тут я тоже неточно выразился, следует читать: " в лучшем случае его можно назвать потомком, ответвлением, но не наследником." Т.е. я хотел сказать, что серьезных аргументов против того, чтоб считать бейсик потомком фортрана у меня нет, абсолютно всякий язык Б, появившийся после языка А можно считать потомком А, но в случае с бейсиком и фортраном мне это кажется натяжкой. Против наследника у меня естественно тоже нет строгих аргументов, все действительно сводится к вопросу классификации. Свое нестрогое определение наследника я представил. Пример удовлетворяющей ему пары: С++ наследник С. Я в принципе согласен, что можно классифицировать достоинства-недостатки обсуждаемых языков так как это делатете Вы, мне это кажется неестественным, но не ошибочным. Со следующими исключениями, которые я считаю ошибочными, но это всего лишь мое субъективное мнение. *) в С утечка памяти НА ПРАКТИКЕ есть очень большая проблема и решения в языке нет. В С нет динамически выделяемой памяти, которую бы освобождал компилятор, а программист это делать часто забывает. Вы может и не забываете, а я иногда забываю. Теоретически проблемы нет, а на практике есть. Ничего сравнимого по масштабам в фортране ИМХО нет. Это не значит что С плохой. Но к первоначальному вопросу это отношения не имеет. *) утверждать что тип complex в С так же просто использовать как в фортране есть ошибка. Это по-моему очевидно и я думаю, что Вы и сами не верите в то что говорите и возражаете просто из упрямства. Это тоже не имеет отношения к первоначальому вопросу. *) важность формальных параметров в функциях и подпрограммах подчеркивается по-моему всеми главными теоретиками программирования, нверное вообще нет ни одного кто бы не высказался по этому поводу аналогичным образом. Введение формальных параметров было большим шагом, поскольку сильно облегчило жизнь программистам. Поэтому наличие - отсутствие формальных параметров ИМХО является очень существенным. Но поскольку, как Вы верно заметили, речь идет не чем-то строгом, а о важно-не важно, легко-не легко, то конечно считать формальные параметры неважными никто не запрещает, все знают что можно обойтись и без них. Такая точка зрения противоречит общепринятому мнению, но общепринятое мнение штука ненадежная. Это имеет отношение к первоначальному вопросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 21:46 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
maytonВо всех ли языках можно выделить строки? Настандартно :-) Допускаю, что не во всех. Но наверное для других существует какая-то своя единица интерпретации... mayton - но может назовете язык,в котором нельзя выделить строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 22:54 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
Да собственно во всех языках выделяются не строки, а операторы (statements). Просто в некоторых языках оператор должен укладываться в одну строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2005, 11:12 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
лыко в строкув принципе "гибриды" ближе к компиляторам- просто они генерят код не для реальных процессоров, а для софтверных (виртуальных). Которые к тому же имеют шанс воплотиться и в железе (вроде для Java делали). Да и для LISPа делали. Как минимум, пытались - не помню, насколько преуспели. Не соглашусь. Если грубо, любой интерпретатор состоит из "компилятора" и "интерпретирующей платформы", и в этом смысле все одинаково близки к "полностью компиляторам". Собственно, в рамках такого разговора я бы предложил считать, что "интерпретатор" состоит из "компилятора и интерпретирующей плаформы", а "компилятор" - из "компилятора и генератора низкоуровневого кода". Байт-код java вполне успешно декомпилируется обратно в исходники. Это означает, что данный конкретный компилятор (javac) достаточно тривиален, а вот байт-код - отнюдь не низкоуровневый. Соответственно, имхо этот продукт - ближе к интерпретаторам. Вы же не назвали бы компилятором такую систему: Код: plaintext Не назвал бы. Но - подозреваю - есть одно различие, которое будет для меня ключевым: неотделяемость. Подчеркну, это именно подозрение - но по Вашему рассказу у меня сложилась гипотеза, что генерируемый перлом "исполняемый файл" - это просто серия вызовов подпрограмм, предоставляемых "ядром". По такой технологии также были построены некоторые "интерпретаторы" или, если угодно, "полукомпиляторы" - например, Clipper. IMHO истинный интерпретатор - тот, который берет строчку кода, исполняет и переходит к следующей и так далее. Таких по большому счету не существует уже лет тридцать. Согласен, можно считать его "истинным" - хотя различие тут на самом деле косметическое, поскольку он состоит все из того же "компилятора" и "интерпретирующей платформы", просто "компилятор" чаще вызывается, а результаты его работы особенно быстро забываются. Сами понимаете, такая схема помимо прочего неудобна для языков, в которых присутствует хоть какая-то структура программы. Для бейсика она реализуется легко - а вот для явы будет чрезвычайно неудобна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2005, 17:31 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
c127Абсолютно всякий язык высокого уровня создавался именно для того чтоб могла программировать домохозяйка, т.е. по Вашей классификации человек, не знающий конкретной архитектуры машины ("давайте программировать без программистов"). Простите, но это не моя классификация. "Домохозяйка - человек, не знающий конкретной архитектуры", или "программист - человек, знающий конкретную архитектуру" - таких утверждений у меня нет и не было. Существует как минимум один ЯВУ, создававшийся "не для домохозяек" - Си. Один - потому что лень подбирать другие примеры :) c127В этом смысле пара бейсик - фортран абсолютно ничем существенным не выделяется. Выделяется именно ориентацией на предметников. Фортран так был задуман (если не ошибаюсь, Вы сами говорили об этом), у Бейсика под этим лозунгом прошло "второе рождение" (в семидесятые годы, когда появились мини-ЭВМ и обнаружилось желание решать кучу "мелких" задач при дефиците программистов). c127Ну Вы же сами заговорили о наследнике Я употребил неудачный синоним. И вместо того, чтобы сказать об этом и быстро решить вопрос - получилось так, что Вы спорили с этим синонимом, в то время как (по крайней мере мне) казалось, что Вы спорите с исходной мыслью. Свое нестрогое определение наследника я представил. Пример удовлетворяющей ему пары: С++ наследник С. Не согласен. Не удовлетворяет эта пара Вашему определению. Я в принципе согласен, что можно классифицировать достоинства-недостатки обсуждаемых языков так как это делатете Вы, мне это кажется неестественным, но не ошибочным. Со следующими исключениями, которые я считаю ошибочными, но это всего лишь мое субъективное мнение. *) в С утечка памяти НА ПРАКТИКЕ есть очень большая проблема и решения в языке нет. Как человек, поработавший и с явным выделением-освобождением памяти, и со сборкой мусора, я предпочитаю первый подход - соответственно, не считаю его большой проблемой. Но если Вы обратите внимание - я говорил, что эта проблема решена к настоящему моменту, имея в виду C++ Это не значит что С плохой. Но к первоначальному вопросу это отношения не имеет. Безусловно. А какой собственно начальный вопрос Вы имеете в виду? *) утверждать что тип complex в С так же просто использовать как в фортране есть ошибка. Это по-моему очевидно и я думаю, что Вы и сами не верите в то что говорите и возражаете просто из упрямства. Это тоже не имеет отношения к первоначальому вопросу. Стоп. Давайте уточним. Не помню уже кто именно, формулируя утверждение про прикладное программирование на Си, говорил о настоящем времени, то есть о С++. Чем там использовать тип complex сложно по сравнению с фортраном - не понимаю; если хотите, считайте это упрямством. Если говорить о чистом Си, безусловно, придется заменить использование операций +-*/ на вызов функций. Несмертельно, но неудобно. *) важность формальных параметров в функциях и подпрограммах подчеркивается по-моему всеми главными теоретиками программирования, В противопоставлении подпрограммам без параметров? Можно конкретные цитаты? нверное вообще нет ни одного кто бы не высказался по этому поводу аналогичным образом. Введение формальных параметров было большим шагом, поскольку сильно облегчило жизнь программистам. Поэтому наличие - отсутствие формальных параметров ИМХО является очень существенным. Но поскольку, как Вы верно заметили, речь идет не чем-то строгом, а о важно-не важно, легко-не легко, то конечно считать формальные параметры неважными никто не запрещает, все знают что можно обойтись и без них. Такая точка зрения противоречит общепринятому мнению, но общепринятое мнение штука ненадежная. Это имеет отношение к первоначальному вопросу. Итак, Вы перевернули мою мысль. Я говорю, что "введение подпрограмм" и "введение формальных параметров" - один и тот же шаг. Вы отвечаете - "можно считать параметры неважными". Извините, но я прекращаю всякую беседу с Вами. Ответа на заданные ранее вопросы не жду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2005, 17:50 |
|
||
|
Delphi - универсальнейший инструмент разработки?
|
|||
|---|---|---|---|
|
#18+
softwarer c127 Свое нестрогое определение наследника я представил. Пример удовлетворяющей ему пары: С++ наследник С. Не согласен. Не удовлетворяет эта пара Вашему определению. .... Но если Вы обратите внимание - я говорил, что эта проблема решена к настоящему моменту, имея в виду C++ ... формулируя утверждение про прикладное программирование на Си, говорил о настоящем времени, то есть о С++ Ну и? Страуструп говорил что при создании ориентировался на С (пункт 1 моего определени), Вы сами используете С/C++ практически как синонимы (пункт 2 моего определения), но при этом моему определению наследника не удовлетворяет. softwarer Но если Вы обратите внимание - я формулируя утверждение про прикладное программирование на Си, говорил о настоящем времени, то есть о С++ " Для начала стоит отличить Си и Cи++ ". (softwarer 3 сен 05, 17:30 [1843630]) Будьте последовательны, если различать то уж различать. После справедливого замечания Gluk (Kazan) ([1844091]) Я так и старался подходить к этому вопросу, откуда же мне знать что оппонент уже поменял точку зрения. softwarer А какой собственно начальный вопрос Вы имеете в виду? ... Стоп. Давайте уточним. ... Можно конкретные цитаты? ........... Извините, но я прекращаю всякую беседу с Вами. Что это было? Закругляемся или нет? По-моему пора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2005, 22:16 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33261821&tid=1347403]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
149ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
95ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 579ms |

| 0 / 0 |
