незваный гость писал(а):
Увольте. Я Вам про Ерему, а Вы мне про Фому.
Вовсе нет. Вот смотрите, вы не смогли правильно разобрать мою фразу из-за незнания некоторых нюансов грамматики русского языка, которыми я воспользовался при ее построении. Точно так же достаточно опытный программист может неверно истрактовать чужой код в С++ если он не знает про какой-то нюанс или исключение из правил, упомянутое на стр. XXX в 800-страничном руководстве и использованное в коде. Имхо аналогия вполне наглядная
Чтобы окончательно отбить у вас стремление упорствовать по поводу неудобоваримости C/C++ синтаксиса, приведу в пример вашу собственную фразу:
незваный гость писал(а):
...логично приводит к желанию спросить систему разработки, как она поняла написанную (или, точнее, разработанную) программу ... А пока программа не компилируется, а компилятор выдает что-то нечленораздельное, лично мне очень хочется задать ему вопрос: "ну хорошо, объясни мне, как ты понял эту конструкцию? Что я имел в виду, я знаю, теперь скажи, как ты ее разобрал...". Например, это весьма актуально с мнгоуровневыми template'ами и передачей/переопределением типов.
Вот знаете... никогда еще не сталкивался в Delphi с ситуацией, чтобы мне было непонятно, как интерпретирует компилятор тот код, который я вижу
Вообще эти гадания С-шников на кофейной гуще при разборе чужого (а иногда и своего) кода действительно уже похожи на известный анекдот про программистов у которых много общего с шаманами, не понимающими "как оно работает"
незваный гость писал(а):
Ошибаетесь. Перегрузка операций для стандартных типов существует в ЯП начиная с Фортрана. Начиная с Алгола-68 (ко крайней мере) в ЯП появилась возможность перегружать операции для определенных пользователем типов — достаточно важная для разработки серьезных библиотек. Например, линейной алгебры, символьных вычислений…
В серьезных библиотеках НИКОГДА не реализуют операции над сложными типами перегрузкой операторов. По уму операции над объектами сложного типа всегда реализуются в виде функций, которые возвращают в дополнение к результату как минимум код успешности выполнения. Кроме того если серьезная библиотека представляет из себя хотя бы тысячу строк кода - то перегрузка операций увеличивает вероятность появления ошибки.
незваный гость писал(а):
Опять заблуждаетесь. Шаблон — это в первую очередь возможность передать тип, как параметр. Следующая, более экзотическая возможность использования шаблона — это смешанные вычисления (то есть, когда заметная часть вычисления делается в момент компиляции, а не в момент исполнения программы). Ни одной из этих функций шаблоны не исполняют (да и не могут исполнить). Не случайно Java ввела шаблоны (genegics). И, опять-таки, исторически первые они в Аде.
Что-то я вас не понял... Дак какие функции-то могут исполнять и исполняют шаблоны?
Если вы имели ввиду
Цитата:
Ни одной из этих функций интерфейсы не исполняют (да и не могут исполнить).
, то с этим соглашусь, но:
Те вычисления, которые можно сделать на этапе компиляции, в Delphi вообще всегда выполняются автоматом - и никаких шаблонов для этого не надо
А зачем передавать тип как параметр - это вообще для меня загадка. Можно пример задачи в которой это так нужно?
незваный гость писал(а):
Это — апология невежества. То, что я не знаю, не существует. Кроме win32, ничего в рассмотрение не принимаем… Поскольку я не встречался с задачами, требующими арифметики неограниченной точности, это никому не нужно. И т.д. (Чем-то мне это Маршака напоминает. «О чем разговаривали лошади, хомяки и куры». До боли напоминает.)
А почему мы должны принимать в рассмотрение что-то кроме win32? Ведь
Цитата:
MS интересую банки и страховые компании, покупающие сотни (и тысячи) лицензий за раз.
, а мы с вами живем в суровом мире, где
Цитата:
Для большинства же участников этого процесса, программирование — это чисто экономический процесс.
и где следовательно любительское программирование-как-искусство под какой-нибудь linux/freebsd совершенно не к месту и не является индикатором мощности языка
По поводу задач, требующих повышенной арифметической точности - опять-таки, а вы приведите пример практической задачи, в которой не хватит int64bit или float64/80bit
- и я вам скажу какие книжки надо почитать чтобы получилось решить эту задачу используя стандартные типы
(заранее могу предостеречь от вычислительных задач наподобие расчета электронных уровней атомов или траекторий КА - в этих задач люди всегда обходились - думаю обходятся и сейчас вездесущим double
А если их сейчас и считают с более высокой точностью - то все равно пример будет не в кассу - ведь это все
"счастливый мир, оторванный от экономики", а мы говорим о том случае когда
"программирование - чисто экономический процесс" )
незваный гость писал(а):
Вы, по всей видимости, живете в счастливом мире, оторванном от экономики. Для большинства же участников этого процесса, программирование — это чисто экономический процесс. Им важно не только что делает программа, но и когда. Не только насколько хороша новая идея, но и сколько процентов продаж она принесет. Например, MS не интересуют русские пираты Dev Studio. MS интересую банки и страховые компании, покупающие сотни (и тысячи) лицензий за раз. А банки (и страховки) не интересует быстрый код. Их интересует понятный код. Их интересует код быстро сделанный и надежно работающий. А 4-5 секунд — это не важно. Через год-два это станет 200-300 мс, и все… На это деньги тратить никто не хочет.
Вот здесь-то вы и ткнули пальцем в сторону, противоположную той которую хотели
Синтаксис Delphi существенно более удобочитаемый и понятный чем C/C++.
Программы в Delphi при прочих равных более надежные - за счет строгой типизации, предварительного описания всех переменных, упомянутого выше более понятного синтаксиса, компилятора, который как вы выразились "защищает программиста"
Пишется бизнес-приложение на Delphi вообще иногда в разы быстрее чем на C/C++ - это кажется даже вы сами упоминали (хотя мб путаю с
Егором)
Что касается неважности 4-5 секунд... Будем считать что вы погорячились и забыли, что к серверу крупного банка может быть до сотни тысяч обращений в секунду... какие уж тут 4-5 секунд... За миллисекунды вообще-то дерутся
А вы... 4-5 секунд... через год 200мс... Вы уж извините, но такое годится только при написании всяких фриварных ежедневников.
незваный гость писал(а):
Ада — (предположим) классный язык.
...skipped...
Вот и получается, что Ада — сверкающий журавль в небе. Его может себе позволить Пентагон, но не небольшая компания. А какая-нибудь мелочь, вроде Sony, выбирает для своих устройств Linux и С — неброских синичек. Sony считает деньги. Она не может себе позволить лишние затраты.
Что-то я вас не понимаю... То у вас MSVС/C++ для крупных банков и компаний, покупающих лицензии тысячами... То вдруг он стал неброской синичкой - уделом мелочи... Нельзя ли остановиться на какой-либо точке зрения?
А по поводу того что Ада - журавль в небе, недоступный Sony... Вот скажите честно, вы намеренно лгали или просто не проверяя правильность высказывания написали так как вам казалось?
вот вам ссылочка раз:
http://www.interface.ru/home.asp?artId=1405 (IBM Rational Rose Developer for UNIX, в числе возможностей - генерация кода Java, C++, Ada)
И вот ссылочка два:
http://www.itshop.ru/Level4.asp?ItemId=263 - это позиция из прайса - среда командной разработки, в которую этот IBM Rational Rose Developer for UNIX входит как один из компонентов. Стоимость пакета - ~15k уе - и это для работы под 3 операционки - linux, hp-ux, sun solaris и в комплекте там далеко не только этот rose developer for unix...
незваный гость писал(а):
С (и С++) можно долго и скучно ругать за то, что они не защищают программиста. Как остро заточенные ножи. Но любой повар знает — нож должен быть острым. Большим поварским ножом (20-25 см) охватить себе пол-пальца совершенно не проблема. Вина ли это ножа? Или неумехи–повара?
Не согласен с аналогией. В контексте сравнения C/C++ и Delphi я бы сказал что оба ножа одинаково остры. Просто в случае Delphi у ножа есть снимающийся защитный чехол и удобная надежная ручка
незваный гость писал(а):
Егор писал(а):
Но когда программист смотрит на более мощные языки, то не понимает, что "смотрит вверх", а видит только жуткие странности.
Браво! Добавлять ничего и не надо
Я вижу странность в наличии шаблонов. Вы считаете что это эффективный удобный и необходимый инструмент, а я смотрю вверх? Не удержусь от того чтобы привести здесь опять вашу цитату:
незваный гость писал(а):
А пока программа не компилируется, а компилятор выдает что-то нечленораздельное, лично мне очень хочется задать ему вопрос:"ну хорошо, объясни мне, как ты понял эту конструкцию? Что я имел в виду, я знаю, теперь скажи, как ты ее разобрал...". Например, это весьма актуально с мнгоуровневыми template'ами и передачей/переопределением типов.
судя по ней, глядя на шаблоны в C++ я смотрю не вверх а заглядываю с улицы в окно дома для умалишенных
И вообще, предлагаю либо перейти от махания руками в стороны пентагона, MS, банков и страховых компаний к реальным сравнениям языков на конкретных задачках, либо, если у вас слишком мало времени, завершить дискуссию с результатом "языки равноправны", так как пока что мы разобрали (и то в двух строках) только один практический пример - распределение памяти под объекты и сложные типы - и в этом случае Delphi оказался более гибким и удобным. (По крайней мере такой вывод я сделал из того, что на содержание моего поста от
Дек 09, 2006 14:43:44 с примером кода, решающего ту задачу, для которого вы в C++ предлагаете писать менеджер памяти, вы не ответили).
ps вы уж извините что я так активно привлекаю ваши цитаты как аргументы против вас же, но уж очень вы иногда подставляетесь