2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. На страницу Пред.  1, 2
 
 
Сообщение15.12.2006, 14:36 


05/12/06
15
незваный гость писал(а):
Увольте. Я Вам про Ерему, а Вы мне про Фому.

Вовсе нет. Вот смотрите, вы не смогли правильно разобрать мою фразу из-за незнания некоторых нюансов грамматики русского языка, которыми я воспользовался при ее построении. Точно так же достаточно опытный программист может неверно истрактовать чужой код в С++ если он не знает про какой-то нюанс или исключение из правил, упомянутое на стр. XXX в 800-страничном руководстве и использованное в коде. Имхо аналогия вполне наглядная :)
Чтобы окончательно отбить у вас стремление упорствовать по поводу неудобоваримости C/C++ синтаксиса, приведу в пример вашу собственную фразу:
незваный гость писал(а):
...логично приводит к желанию спросить систему разработки, как она поняла написанную (или, точнее, разработанную) программу ... А пока программа не компилируется, а компилятор выдает что-то нечленораздельное, лично мне очень хочется задать ему вопрос: "ну хорошо, объясни мне, как ты понял эту конструкцию? Что я имел в виду, я знаю, теперь скажи, как ты ее разобрал...". Например, это весьма актуально с мнгоуровневыми template'ами и передачей/переопределением типов.

Вот знаете... никогда еще не сталкивался в Delphi с ситуацией, чтобы мне было непонятно, как интерпретирует компилятор тот код, который я вижу :lol:
Вообще эти гадания С-шников на кофейной гуще при разборе чужого (а иногда и своего) кода действительно уже похожи на известный анекдот про программистов у которых много общего с шаманами, не понимающими "как оно работает" :lol:

незваный гость писал(а):
Ошибаетесь. Перегрузка операций для стандартных типов существует в ЯП начиная с Фортрана. Начиная с Алгола-68 (ко крайней мере) в ЯП появилась возможность перегружать операции для определенных пользователем типов — достаточно важная для разработки серьезных библиотек. Например, линейной алгебры, символьных вычислений…

В серьезных библиотеках НИКОГДА не реализуют операции над сложными типами перегрузкой операторов. По уму операции над объектами сложного типа всегда реализуются в виде функций, которые возвращают в дополнение к результату как минимум код успешности выполнения. Кроме того если серьезная библиотека представляет из себя хотя бы тысячу строк кода - то перегрузка операций увеличивает вероятность появления ошибки.

незваный гость писал(а):
Опять заблуждаетесь. Шаблон — это в первую очередь возможность передать тип, как параметр. Следующая, более экзотическая возможность использования шаблона — это смешанные вычисления (то есть, когда заметная часть вычисления делается в момент компиляции, а не в момент исполнения программы). Ни одной из этих функций шаблоны не исполняют (да и не могут исполнить). Не случайно Java ввела шаблоны (genegics). И, опять-таки, исторически первые они в Аде.

Что-то я вас не понял... Дак какие функции-то могут исполнять и исполняют шаблоны? :)
Если вы имели ввиду
Цитата:
Ни одной из этих функций интерфейсы не исполняют (да и не могут исполнить).
, то с этим соглашусь, но:
Те вычисления, которые можно сделать на этапе компиляции, в Delphi вообще всегда выполняются автоматом - и никаких шаблонов для этого не надо :lol:
А зачем передавать тип как параметр - это вообще для меня загадка. Можно пример задачи в которой это так нужно? :)

незваный гость писал(а):
Это — апология невежества. То, что я не знаю, не существует. Кроме 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++ я смотрю не вверх а заглядываю с улицы в окно дома для умалишенных :lol:

И вообще, предлагаю либо перейти от махания руками в стороны пентагона, MS, банков и страховых компаний к реальным сравнениям языков на конкретных задачках, либо, если у вас слишком мало времени, завершить дискуссию с результатом "языки равноправны", так как пока что мы разобрали (и то в двух строках) только один практический пример - распределение памяти под объекты и сложные типы - и в этом случае Delphi оказался более гибким и удобным. (По крайней мере такой вывод я сделал из того, что на содержание моего поста от Дек 09, 2006 14:43:44 с примером кода, решающего ту задачу, для которого вы в C++ предлагаете писать менеджер памяти, вы не ответили).

ps вы уж извините что я так активно привлекаю ваши цитаты как аргументы против вас же, но уж очень вы иногда подставляетесь :)

 Профиль  
                  
 
 
Сообщение15.12.2006, 17:28 
Аватара пользователя


26/02/06
179
Хижина дяди Тома
Уважаемый , alexey_ar! При всей вашей не любви к шаблонам, приведите пожалуйста пример реализации на Delphi любой коллекции (стек, очередь, словарь и т.п.), не зависящей от типа хранимых данных.

 Профиль  
                  
 
 
Сообщение15.12.2006, 19:43 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
alexey_ar писал(а):
Вот смотрите, вы не смогли правильно разобрать мою фразу из-за незнания некоторых нюансов грамматики русского языка, которыми я воспользовался при ее построении.

ну-ну. Можно подробнее (в приват, это будет off-topic здесь). Я с удовольствием поучусь русской грамматике. Желательно со ссылками, примерами из литературы. Между прочим, если Вы желаете именно опровергнуть меня, то я указывал не на неправильность построения Вашей фразы, а на неоднозначность ее конструкции.

~~~

Ваше дальнейшее сообщении — это поток передергиваний и голословных утверждений, на которые просто неинтересно отвечать. Вы не слушаете никого из участников дискуссии (к слову, Вам привели пример многословной арифметики — криптография), читаете через слово (о цене рабочих мест для встроенных систем и их нуждах) или вырываете из контекста (с каких это пор MsDev генерирует программы для жестких встроенных систем? И причем тут банки — они что, приборы (как Sony) делают)? Просто скучно.

Пример:
alexey_ar писал(а):
Будем считать что вы погорячились и забыли, что к серверу крупного банка может быть до сотни тысяч обращений в секунду... какие уж тут 4-5 секунд... За миллисекунды вообще-то дерутся

Ваше представление о том, что такое хорошо, и что такое плохо не выдерживает серьезного разбора. Но для начала: форма открывается на клиентской стороне (а не на серверной), на сервере эти миллисекунды определяются не процессором, а количеством обращений к диску и доступом к БД. Плюс, можно добавлять дальнейшие нюансы… Мухлюете-с.

Еще пример:
alexey_ar писал(а):
А по поводу того что Ада - журавль в небе, недоступный Sony... Вот скажите честно, вы намеренно лгали или просто не проверяя правильность высказывания написали так как вам казалось? Smile
вот вам ссылочка раз: 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...

Ну, во-первых, это Роза (посмотрите, заодно, что она делает за эти $15000). Во-вторых, Ада это журавль по ресурсам (времени исполнения), а не поддержки Розой. В-третьих, ни на один из моих вопросов Вы не ответили — я их повторяю:
Цитата:
Ада — (предположим) классный язык. Мне это по барабану, если нет компилятора для моего процессора. Рабочее место программиста на С++ для встроенных систем легко стоит 5-10 тысяч долларов. Сколько оно стоит для Ады? Есть ли вообще Ада для этого процессора? Какие у нее запросы? Она сможет работать в 48 КБ оперативной памяти? В 4 КБ? Как она ложится на конкретную RTOS? Я должен сам делать порт? Плюс, неизвестные дополнительные затраты на все стандартизованные радости?


Я где-то спрашивал про Unix (Linux)? IBM сказала, где взять Аду для Inmos805? Как планировщик Ады ложится на систему управления процессами для этого процессора? И, кстати, откуда Вы сделали вывод, что если Роза (и Ада) в Unix'е, то Unix — это что-то большее, чем среда разработки?!?

Так что, будем считать, что Вы просто не разобрались. Иначе за такое шулерство положено канделябром.

И с логикой у Вас тоже проблемы: из
alexey_ar писал(а):
Цитата:
MS интересую банки и страховые компании, покупающие сотни (и тысячи) лицензий за раз.

, а мы с вами живем в суровом мире, где
Цитата:
Для большинства же участников этого процесса, программирование — это чисто экономический процесс.

Вы делаете выводы:
alexey_ar писал(а):
А почему мы должны принимать в рассмотрение что-то кроме win32?

и где следовательно любительское программирование-как-искусство под какой-нибудь linux/freebsd совершенно не к месту и не является индикатором мощности языка

За такое двойку по логике схлопотать недолго. Из того, что MS интересуют банки, не следует, что банки интересует MS. Банкам платить MS дань (налог) ой как не нравится. И они во всю рассматривают альтернативы — Java, Linux, Oracle…

 Профиль  
                  
 
 Контейнеры
Сообщение17.12.2006, 00:55 


22/06/05
164
В C++ можно писать универсальные алгоритмы для контейнеров, состоящих из элементов одного типа.

Пример 1. Вот функция, которая считает, сколько раз в динамическом массиве src присутствует каждое значение, и выдаёт результат в виде ассоциативного массива (result[val] будет числом таких индексов i, для которых src[i] равно val):
Код:
template<typename T>
map<T, size_t> count_all_values(const vector<T>& src) {
    map<T, size_t> result;
    for (size_t i = 0; i < src.size(); ++i)
        ++result[src[i]];
    return result;
}

На вход этой функции можно подавать хоть vector<int>, хоть vector<string>, хоть vector<myclass>, лишь бы для myclass была определена операция сравнения. Легко обобщить и дальше, чтобы можно было подавать любой контейнер (список, очередь, и т. д.).

Во втором примере рассмотрим ситуацию, когда в одном контейнере должны быть элементы разных типов.

Пример 2. Пусть D1 и D2 - потомки класса B. Во всех этих классах есть виртуальный метод "void f()". Нужно создать контейнер, поместить в него объекты классов D1 и D2, а затем вызвать для каждого элемента контейнера метод f(). Контейнер и его элементы должны уничтожаться автоматически.

Любопытно, есть ли в языке C++ и его стандартных библиотеках готовое средство для такой ситуации. Знаю только решение с использованием "умных указателей" из библиотеки Boost:
Код:
typedef shared_ptr<B> Bptr;
vector<Bptr> ar;
ar.push_back(Bptr(new D1));
ar.push_back(Bptr(new D2));
for_each(ar.begin(), ar.end(), bind(&B::f, _1));

Видимо, для ситуации из второго примера в Delphi есть стандартное решение, так как умные указатели встроены в сам язык.

 Профиль  
                  
 
 
Сообщение17.12.2006, 01:28 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Егор писал(а):
В C++ можно писать универсальные алгоритмы для контейнеров, состоящих из элементов одного типа.

Это, конечно, правда, но правда не вся. По сути, алгоритму нужен интерфейс контейнера. И интерфейс сравнения. А вектор ли это, или список, ему по барабану. С этой точки зрения языки, имеющие выделенное понятие интерфейса (Java, C#, видимо Delphi), ушли дальше. Динамическим языкам это обычно не так важно.

Другой вопрос, что в статических языках без шаблонов возникают проблемы с передачей типа в алгоритм. Истина, наверное, в наличии обоих механизмов (и шаблонов и интерфейсов).

 Профиль  
                  
 
 
Сообщение17.12.2006, 18:33 


05/12/06
15
незваный гость писал(а):
Вы не слушаете никого из участников дискуссии (к слову, Вам привели пример многословной арифметики — криптография)

не нашел на пред. странице слова "криптография"

незваный гость писал(а):
читаете через слово (о цене рабочих мест для встроенных систем и их нуждах)

Слова про встроенные системы появились ПОСЛЕ того как я ответил на ваш пост. (видимо вы их добавили во тв этот момент Последний раз редактировалось: незваный гость (Пт Дек 15, 2006 20:06:30), всего редактировалось 1 раз - и это произошло после того как я ответил (Добавлено: Пт Дек 15, 2006 15:36:43 и не редактировалось). Нехорошо. Канделябр по вам плачет :).
По поводу передергивания - то же самое - я в самом начале, в своем первом посте написал, что ВСЕ СКАЗАНО ТОЛЬКО В РАМКАХ WINTEL. Чего вас понесло оппонировать на тему встроенных систем и тд - я не знаю. Так что передергивать начали вы, а не я.

незваный гость писал(а):
Ваше представление о том, что такое хорошо, и что такое плохо не выдерживает серьезного разбора. Но для начала: форма открывается на клиентской стороне (а не на серверной), на сервере эти миллисекунды определяются не процессором, а количеством обращений к диску и доступом к БД. Плюс, можно добавлять дальнейшие нюансы… Мухлюете-с.

Нет я не мухлюю, это вы почему-то за меня додумываете что я говорил про клиентскую сторону. А я говорил про серверную. (Видимо про рабочие места именно для встроенных систем я тоже должен был сам додумать да? Это вообще интересно - дискуссия с додумываниями :) )

незваный гость писал(а):
Еще пример:Ну, во-первых, это Роза (посмотрите, заодно, что она делает за эти $15000). Во-вторых, Ада это журавль по ресурсам (времени исполнения), а не поддержки Розой

Вот опять вы сами пишете с точностью до наоборот по сравнению с тем что вы сами на предыдущей странице писали про язык Ada -
Цитата:
Достаточно быстрый — да.
.
Опять-таки настойчиво рекомендую вам четко определяться с мнением по тому или иному поводу перед тем как писать его :)

незваный гость писал(а):
Ада — (предположим) классный язык. Мне это по барабану, если нет компилятора для моего процессора. Рабочее место программиста на С++ для встроенных систем легко стоит 5-10 тысяч долларов. Сколько оно стоит для Ады? Есть ли вообще Ада для этого процессора? Какие у нее запросы? Она сможет работать в 48 КБ оперативной памяти? В 4 КБ? Как она ложится на конкретную RTOS? Я должен сам делать порт? Плюс, неизвестные дополнительные затраты на все стандартизованные радости?

Про стоимость рабочих мест мы уже выяснили - вполне близкие расценки. Что касается наличия компилятора для данного процессора - если обсуждать собственно язык - то это не относится к преимуществам или недостаткам языка и поэтому выпадает из темы разговора. Если говоорить о практическом применении - то не знаю, и не собираюсь это обсуждать - так как я стремлюсь (безуспешно :( ) удержать разговор в рамках wintel. По поводу объемов памяти - предполагаю что все с точностью до наоборот - возможно такое, что С не хватит памяти в микроконтроллере для решения данной задачи, а для Ada - хватит. Потому что в оборонке всегда наиболее жесткие требования к прожорливости кода во всех смыслах.

незваный гость писал(а):
Я где-то спрашивал про Unix (Linux)?

А я в своем первом посте где-то говорил про НЕ wintel? Что ж вы тогда ко мне привязались? :)

незваный гость писал(а):
И с логикой у Вас тоже проблемы: <skipped>

Да нет, нет у меня проблем с логикой. Это я просто еще раз вас попытался лягнуть за уход от wintel в строенные системы (вы правда опять увернулись :) ). Вы там написали, что Для большинства же участников этого процесса, программирование — это чисто экономический процесс.. Дак вот если рассматривать программирование как чисто экономический процесс - то тем актуальнее становится ограничение "в рамках wintel" - так как банкам всякие linux'ы которые админ будет десять раз пересобирать при каждом новом требовании не интересуют. Их интересует нечто тяжелое, универсальное, солидное и надежное - то есть wintel. И уж тем паче бухгалтерия банка не будет использовать встроенные системы (разве что калькулятор? :lol: ). Вот я про это и сказал - что раз программирование чисто экономический процесс - то уход от wintel на встроенные системы, к которому вы так стремитесь передернуть все время - нелогичен. Ставлю вам двойку за неумение следить за ходом собственных рассуждений :) То встроенные системы, то банки, понимаешь... Вон куда с вами забрели... А я всего-то высказал свое мнение _в рамках wintel_...

ps предлагаю прекратить обсуждения встроенных систем, сравнения С с адой и прочими оффтопными языками. А топик переименовать в Delphi vs. C++ на платформе wintel дабы исключить подобные разногласия и оффтопик в будущем и не действовать на нервы незваному гостю :)

 Профиль  
                  
 
 
Сообщение18.12.2006, 12:30 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
 !  PAV:
Участники обсуждения слишком часто переходят на личности, обвиняют друг друга в передергиваниях и т.д. Кроме того, сама постановка вопроса о том, "что лучше" слишком уж напоминает вечный спор "остроголовых" с "тупоголовыми". Так можно флеймить вечно. Все равно реально каждый будет работать на том, (а) на чем привык; (б) на чем ему лично удобнее; (в) на чем хочет работодатель. Поэтому тему прикрываю. Будет желание вернуться к конструктивному обсуждению - пишите. Только с обоснованием, что хотите обсуждать, так как я не склонен просто так открывать эту неоднозначную тему.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group