hvv > Какие же противоречия в С++ вы можете указать (мне кажется, таких нет)?
Первое и самое сильное : на слаботипизированный язык насадили сильнотипизированное расширение. IMHO это очевидно...
hvv > А что такое generic в Ada95 и модуле2 - что - аналог шаблонов hvv > С++?
Да нет, получатеся что templates в C++ и generic для ISO-Modula-2
являются аналогами generic в Ada :-) ибо даже Страустрап сам признался
что когда занимался разработкой C with Classes, изучил некоторое
количество языков (Ada83 в том числе), кроме того SGL был сначало
написан для Ada а потом уже STL для C++. Если ты не в курсе,
то авторами SGL и STL являются одни и те же люди :-)
hvv > Если да, есть ли там аналог шаблонов классов, а также hvv > частичная специализация шаблонов?
А ты покажи мне C++ компилятор который это ПОЛНОСТЬЮ поддерживает :)
То, что на слаботипизированный язык насадили сильнотипизированное расширение - не вижу абсолютно никаких проблем в этом (лучше поздно чем никогда) - (мы говорим о С++, а не о органичности перехода с С на С++).
Насчет generic - ответ мне не понятен
Насчет SGL и STL - первый блин всегда комом :-). В курсе про Степанова - разве он был не один?
Поддержка: egcs (новый gcc) поддерживает все. Шаблоны классов поддерживает (по стольку-поскольку) BC3.1(!) и VC4. По-моему, сейчас все последние виндовые компилеры поддерживают частичную специализацию (а полную поддерживали еще года 4 назад). По-любому STL доступна с каждым компилером. А наиболее оптимальный вариант разработчика многоплатформенного софта - купить транслятор с С++ в С (таких сейчас много) - они есть для всех платформ (каждая версия доступна для всех платформ) - хотя они тупее gcc, но все равно подобрать нормальный можно.
Вот именно. И место этому C++ там же, где ассемблеру - в машиннозависимых процессорожрущих задачах. Во всех остальных случаях надежность и масштабируемость гораздо важнее...
to vsl:
Ну зачем же процессорозависимых? Зачем процессорожрущих? Неужели больше
ничего нельзя было вынести из этой дискуссии? ^^^^^^^^^^ Это не о С++.
И не надо путать яичницу и дар божий!
Послушать VSL, так он круче митьки косого. Статью тут даже ваял.... терминами бросается... Сем лет на C++ пишет... Браток ты бы это того... спросил, узнал на чем народ софт пишет, типа игр, тренажеров, автоматизации всякой. Про какие ocaml ты несешь. У меня 150000 строк это средний проект который должен и летать и структуру иметь и понятным быть. Математический ты наш. Для того что бы других учить нужно самому что нибудь толковое сделать, сначала, а не на пятерки учится. Сначало дело. А как сделаешь что то чтобы тебя уважать твои знакомые могли, вперед учи. Покажи ка наv свою сумашедшую походку :))
Игры - это не софт. Уж лучше ты сам спроси, на чем софт для атомных станций и космических проектов пишут. Уж никак не на C++, это я тебе гарантирую. Ну а своим софтом я бы конечно поделился, если бы он имел хоть какой смысл за пределами лаборатории - слишком узкие задачи.
VSL я вообще зря влез, и я гарантирую - это последнее письмо по твоему поводу. Не выступай гарантом не надо. Софт для большинства котроллеров на С да, на Форте(немного) пишут, ну и на ассемблере. Да и не по тем причинам про которые ты думаешь. И не сложно все там.. Только не надо мне про математику, управляющую орбитальным телескопом или поднимающую графитовый стержень из ядерного компота. Ты там своим язычком, на котором удобно параллельную обработку делать не обойдешься, без поддержки железа и OS...
У тебя узкая специализация, вот и не учи остальных, твой опыт не позволяет, ну или позволят учить тех, кто попадает под определение твоей деятельности. Тебе ведь никто по серьезному не возражает только по причине того, что все серьезные люди работают, а не с упертыми спорят. Общаешься ты в основном, либо с коллегами повернутыми на своих задачах либо со студентами и школьниками неоперившимися.
Блеск и нищета C++ и С проистекают не из за их убогости, а из за архитектуры современных компьютеров и операционных систем. Если ты можешь это изменить и создать что то, принципиально новое, то давай дерзай, а не бросайся терминами и не кичись собственной эрудированностью.
А по жизни твой диагноз это неудовлетворенность. Чисто по Фрейду. Найди себе девочку хорошую или мальчика (если тебя это более устроит), чтобы давали они тебе почаще и хвалили тебя. Переключись вобщем.
Нарушил свое слово :) послал еще раз, а то читать не удобно
VSL я вообще зря влез, и я гарантирую - это последнее письмо по твоему поводу.
Не выступай гарантом не надо. Софт для большинства котроллеров на С да, на Форте(немного)
пишут, ну и на ассемблере. Да и не по тем причинам про которые ты думаешь.
И не сложно все там..
Только не надо мне про математику, управляющую орбитальным телескопом или поднимающую графитовый стержень
из ядерного компота. Ты там своим язычком, на котором удобно параллельную обработку делать не обойдешься,
без поддержки железа и OS...
У тебя узкая специализация, вот и не учи остальных, твой опыт не позволяет, ну или позволят учить только тех,
кто попадает под определение твоей деятельности. Тебе ведь не кто по серьезному не возражает только по причине
того, что все серьезные люди работают, а не с упертыми спорят. Общаешься ты в основном, либо с коллегами
повернутыми на своих задачах либо со студентами и школьниками неоперившимися.
Блеск и нищета C++ и С проистекают не из за их убогости, а из за архитектуры современных компьютеров
и операционных систем. Если ты можешь это изменить и создать что то, принципиально новое, то давай дерзай, а не бросайся терминами и не кичись собственной эрудированностью.
А по жизни твой диагноз это неудовлетворенность. Чисто по Фрейду.
Найди себе девочку хорошую или мальчика (если тебя это более устроит),
чтобы давали они тебе почаще и хвалили тебя. Переключись вобщем.
anonymous (*) (2000-04-21 05:03:20.0)
Lyuboi VMK-shnik i nekotorye mehmatyane skazhut pravlny i sovremenny
OO-yazyk - Eifel k sozhaleniyu on kommercheskiy i ne poluchil shirokgo rasprostraneniya
ya seichas chitayu pro nego i prosto udivlyayus kak ya na C++ pisal tak bystro to ?
Kstati tut podskazyvayut chto v Byte za mart ili fevral pochti ves nomer posvyashen yazykam programmirovaniya napisanny vse plyusy i minusy
sam ne chital no cheloveku doveryayu ...
a Voobshe eto flame nazyvaetsya :)
Оххх ;-) Как я люблю, когда такие "крутые" ребята начинают говорить о чем-нибудь...
Все и всегда сваливается на "моя пиписька больше, круче и правильней...".
И когда вы вырастете?
Заманал со своим Caml. Я учусь во Франции, они тут свой Caml пихают ТОЛЬКО для того чтобы мы знали о таком способе програмирования (не знаю даже как это будет по русски, такой ереси я дома не учил). На этом языке тут пишут в основном для магнитных карт. Не понятно к чему наехал на Java - там твоя любимая строгая типизация. Кстати о чем мы поем - Caml и им подобные сами определяют типы без прямого указания типа int x и тра-ла-ла. У этого свои преимущества и недостатки. Да код элегантный (у Java не хуже), но этот язык не для каждодневных задач.
Ну, уже не Caml, а Ocaml, который гораздо мощнее. А про каждодневные задачи - попробуй, назови такие, для которых Ocaml не подходит. Я вот так сразу и не смогу ничего назвать кроме навороченных численных задач на больших массивах данных. Ну а строгая типизация - она строгая и есть, если требуется в большинстве случаев указывать типы, так как наиболее generic тип может быть определен по контексту. Но попробуй потом за рамки этого типа выйти!
<p>
P.S. 2All: ну так давайте короткую задачку, которая, как вам кажется, идеальна для C++. Я сделаю то же на Ocaml и сравним результат...
Млин...бАллё! Народ! Вы ещё помните, зачем программер САМ определяет типы4? Чтоб с указателями работать! С памятью!
А если хотите скорость - ну лучше VBasica нет.
Народ, наслаждайтесь Caml-ом кто не видел, это наши лабы...Сорри че названия по французски...
let string_of_list vide par_ouvr par_ferm sep string_of_type =
let rec show_list = function
[] -> ""
|[last_elem] ->string_of_type last_elem
|tete::queue -> (string_of_type tete)^sep^(show_list queue) in function
[] -> vide
| liste -> par_ouvr^(show_list liste)^par_ferm;;
let string_of_list2 vide par_ouvr par_ferm sep string_of_type =
let concat x y= y^(string_of_type x)^sep in
let affich = function liste -> list_it concat liste "" in function
[] -> vide
|liste -> par_ouvr^affich liste^par_ferm;;
let spec vide = string_of_list vide "{" "}" "::";;
type Nombre = Entier of int|Reel of float;;
type Monome = {degre:int;coeff:Nombre};;
type polynome = list of Monome;;
let string_of_nombre = function
Entier x -> (if x>=0 then "+" else "")^string_of_int x
|Reel x -> (if x>=0. then "+" else "")^string_of_float x;;
Kakaya svyaz mezhdu pipskami i yazukami ?
:)
Eifel - kompiliruemiy yazyk v kotorom est mnogo chego chego net v C++
ya ved ne govoryu chto na nem davaite vse pisat ( hotya nado by )
ya govoryu vot yazyk luchshe chem C++ prosto chtoby ne govorili chto C++
luchshe vseh vsyakie krome Basic/Assembler/C/C++ ( vozmozhno pascal )
ne znayushie
С++ - высокоуровневый ассемблер? Тогда Visusl Basic - высокоуровневый
С++. Fort - это действительно высокоуровневый ассемблер, а зачастую эффективнее самого ассемблера.
Во что все и упирается. В архитектуру. У математиков крыша работает по другому. Для них C++ не помощник, но понять того, что все их идеи один хрен должны считатся с реальным положением вещей и возможностями машины им тоже трудно, к счастью не всем. Есть среди моих коллег, люди с матмеха которые от бога, а есть и редкие тормоза, не способные понять простых вещей и городящие вокруг 2+2 теории. У моего бывшего коллеги так мысль вдаль уплывала, что его приходилось за ноги обратно в штаны вставлять, что бы он понял, что его выкрутасы не эфективны, для данной задачи. Многие с мат. образованием, почему то уверены, что они великие программисты. Програмист, это врожденное. Надо чувствувать хороший стиль и строй. По хорошему, главное это как и что ты делаешь, а не на чем. Плохому танцору всегда что нибудь мешает. И на паскале можно писать эффективно, то что пишут на С.
>Проблема в том, что все ML и Бэйсики в настоящее время АБСОЛЮТНО не совместимы с фон-Неймановскими машинами. А Fort и c++ - совместимы :) Гы!
А в чем тут проблема? Кстати, напрасно сравнивают С/C++ с ассемблером - свойтсво самомодификации кода Си отродясь не имело (я не про жонглирование с указателями на функции, а про настоящую самомодификацию). Старый добрый Лисп в этом плане гораздо ближе асму.
Ктсати, кто-то спрашивал про броузер на Лиспе: http://wwwrzstud.rz.uni-karlsruhe.de/~unk6/closure/. Сорцы.
> Шаблоны в С++ - просто (IMO) прорыв для компилируемых языков.
Елси не секрет, в чем состоит прорыв? Не воспринимайте как наезд, мне действительно интересно.
Все бы хорошо, если бы ассемблер имел только одно свойство - самомодификации кода. Только сдается мне, что используют асм совсем по другой причине - эффективности и близости к платформе. И в этом плане "старому доброму Лиспу" до С/C++ - как до луны (хотя бы по причине самомодификации кода :). И сравнивать самомодификацию кода асма с самомодификацией кода лиспа некорректно.
Лисп не настолько неэффективен, как это принято думать. По моему личному опыту разница в скорости работы аналогичных программ на С и Лиспе колеблется от никакой до трех-четырех раз. И причина не в самомодификации, а в множестве runtime проверок, которые компиляторы Лиспа вставляют в сгенерированный код, и работе сборщика мусора. Зато программа получается по-настоящему пуленепробиваемой - никаких умилительных утечек памяти и GPFов.
Сравнивать самомодификацию лиспа и асма вполне правомерно: модификация происходит на одном уровне абстракции с исходной программой, т.е. программисту не нужны никакие дополнительные приблуды, чтобы изменить код работающей программы. На Си можно создать свой подъязык, транслятор с него и средства динамической модификации, но это уже не то. Получится убогий Лисп (или ассемблер - как вам больше нравится), написанный на Си :)
Ну философски их сравнивать может быть и корректно, но практически (а мы здесь по моему говорим о практической стороне этих языков - скорость Netscape 6.0 etc.) их сравнивать нельзя. Если в асме модифицированный код будет работать так же эффективно, как и исходный, то в лиспе модифицированный код будет работать медленнее, чем скомпилированный исходный. И даже если его перед выполнением динамически скомпилируют, то все равно будет потеря времени. А в асме вообще ничего компилировать не надо. Собственно даже философски модификация кода в асме не аналогична модификации кода в лиспе, т.к. модифицируется не код на асме, а машкод, т.е. другой язык. Кстати в С/C++ возможна точно такая же модификация кода, правда о никакой портабельности в этом случае и мечтать нельзя (как и в ассемблере). С другой стороны возможностью чистой модификации кода из этих языков обладает только лисп. Там это все и красивее и удобнее и модифицированный код получается на том-же языке, на котором написан исходный код. А вообще надоели эти споры о языках. IMHO каждый язык в чем-то хорош, а в чем-то плох. Lisp красив, интересен и эффективен например в области лингвистики, но у меня руки не повернутся писать на нем системные приложения (если конечно использовать весь его потенциал, а не думать об эффективности, но в этом случае это получится тот-же си). Если я ошибаюсь в оценке эффективности компиляторов лиспа, то приведите какие нибудь доводы, а то все что от вас слышишь это крики типа C/C++ - suxx, lisp - rulez. В лучшем случае от вас можно услышать о математических возможностях лиспа, как языка, но не как языка, на котором можно эффективно реализовывать какие нибудь проекты.
Я кричу очень редко, и никогда - в профессиональных спорах :)
Мне кажется, причина неприятия малоизвестных языков не в их (не)эффективности. Просто когда специалист в совершенстве овладевает каким-либо средством разработки, он неизбежно начинает преувеличивать достоинство своего любимого и преуменьшать качества "вражеских" языков. Вспомните вечные споры вижуалистов и делфийцев. В свое время мне вдоволь пришлось пописать С/C++, и как любой истинный сишник я свысока смотрел на остальные "неполноценные" языки. К счастью, вовремя нашелся человек, доходчиво объяснивший и показавший мне на примере, что в наше время главное не количество тактов затрачиваемых программой, а время разработки и отладки. В мире давно уже дешевле купить лишние пару процессоров и полгига памяти, чем оплатить лишний месяц работы программиста.
Конкретный жизненный пример: в прошлом году я написал на Common Lisp (компилятор LispWorks 4.01) кодер/декодер JPEG. Работает в четыре раза медленнее IJG libjpeg-6, и чуть быстрее PVRG JPEGv1.2.1 на одном тестовом наборе. Оба аналога написаны на ANSI C. Написал я его за три месяца работы в свободное время, тогда как libjpeg - продукт семи (опытных) программистов, доводившийся несколько лет. Так вот, на мой взгляд, разница в скорости исполнения отдельно взятой программы в четыре раза не стоит нескольких лет моей жизни.
ИМХО я лично все на паскале даже в линуксе пишу. И мои проги на нем, родимом, работают куда лучше, чем на C++ -
Правда тут еще может сказываться привычка - обычно все паскалисты не навидят C :-)))
Кстати, мы тут не Netscape 6 PR1 обуждаем-с? :-)))
У меня в принципе немножко поработал. Скажу так - свой SMTP я наверное уже достал - сообщениями о крэшах, после которых выползает докладчик и просит детально объяснить - как и от чего крэш прошел :-))) а я че, знаю что-ли? :-))) бред в общем
Народ, у вас крыша в порядке?!!! О чем речь то: о Нетшкафе или о достоинствах языков? АЛЛЕ! Кому на чем задачи удобнее реализовывать, на том и пишут. А то, на сколько хорошо реализована задача - в первую очередь зависит от мастерства программиста!!! И вообще, это тема отдельного форума, а то я залез, а тут вместо объективных багов, о своих предпочтениях, с наездами, да еще и с претензией на знание (нек-е) распинаются. "Вы еще подеритесь, горячие финские парни..." Отстой какой-то!
Отдельно для желающих поорать на vsl: ну упертый он чувак! Ну, если не сказать, баран. Ну, чего вы время то тратите в пустую?!
Вот от того, что развелось слишком много таких умников, у которых ручки не повернутся писать на лиспе системные приложения, и канули в Лету лисп-машины. А ведь до их возможностей современные ОС подбираются только сейчас! Как вам полностью работающий голосовой ввод/вывод в 85г? Сейчас даже такого нет. Все беды от зазнавшихся обнаглевших императивщиков!
От старины мелтеда: увидев, как кто-то вероломно пользуется именем почившего MB хочу выразить злобный протест и фак ю плагиатору. Хотя сам-таки пишу на C++(постоянно) и Delphi(изредка). За чо бабло откатывают, на том и пишу. Будут за Caml откатывать -- буду на нем писать. А лисп удивительно красив. Но головоломен поначалу с непривычки. А нетшкаф новый -- редкостный отстой, и прекрасная демонстрация правильности моих тезисов об эффективности Open Source разработки.
Все, я назад в гробик.
to anonymous :
a> Угу, осталось только придумать аппаратуру, понимающую лисп и все a> будет ок.Дебил ты,всл. На чем же интересно написаны все твои лиспы?
Аппаратура уже давно существует, к примеру лисп-машины от Texas Instruments или Explorer от Unisys, причём аж с 1985 года ! Кроме того
разработкой лисп-машин занимались LMI, Symbolics и Xerox. Это по первому пункту. По поводу второго : как правило Lisp системы написаны
как правило на Lisp'е. По поводу ДЕБИЛА : "по себе людей не судят..."
Заключение : Индустрия программирования не (была) готова принять Lisp
в качестве языка для промышленного программирования (как в своё время
получилось с Ada, правда сейчас ситуация изменяется и популярность Ada набирает обороты) и это не случится до тех пор пока отсутствует
достаточное количество Lisp-профессионалов. Тут ещё важен момент коммерческой раскрутки - примером которой можно назвать те же C++,
Visual Basic и Java - языки на которых МОЖНО ПИСАТЬ, но при этом иметь
массу проблем.
Лисп вовсе не обязательно должен быть написан на чем-то другом. Есть, конечно, и на С (CLISP например), но обычно делается bootstrap из другой среды Лиспа. Так сделаны LispWorks, CMUCL и ACL.
Первый же Лисп на Си быть написан не мог, хотя бы потому, что появился лет на 15 раньше.
Лисп-машины начали серийно производить в 1980-м. Кстати, если у кого завалялась (особенно Symbolics), куплю за умеренную цену. Предлагали взять из Штатов, но вы понимаете, сколько будет стоить overseas доставка аппарата размером с холодильник :)
Нет, Netscape - неправильный пример. А что ты скажешь про Lynx? ;-)
Netscape вообще - средство просмотра порнобаннеров. Нормальный, правильный броузер - Lynx (что, в свою очередь, подтверждает правильность _моих_ тезисов про Open Source :).
Уххх. Неужели Макском начал антифлеймовые действия предпринимать. Давно пора (хотя и моя толика в этом флейме тоже есть). Предлагаю радикальный метод - не пропускать сообщения, содержащие в себе слова лисп, cmucl, ocaml и т.д. :) Сразу флейма на порядок уменьшится.
И люди перестанут на сайт ходить после такой засады. Общеизвестно, что форумы (за редким исключением) существуют для флейма мимо кассы. Причем на сайтах про Linux -- только для флейма, т.к. толком никто ничего не знает, но считает себя этаким гуру-шовинистом уже потому, что смог Linux установить. К халяве мы слишком привыкли, а в Linux халявы нет. Как потопаешь, так и полопаешь. А Гейтсу надо в Рашу перебираться. Менталитет тут соответствующий.