(Да и имя какое хорошее Вирт подобрал: Оберон -- это царь эльфов.)
Захожу на главную страничку сайта и вижу...
У нас есть значительный опыт использования языков C++ (Borland C++ Builder, GCC) и Delphi.
Дорогие коллеги! Ничего личного, но Borland C++ Builder -- это не один из "языков C++", это среда разработки; а GCC -- это вообще набор компиляторов от GNU. У C++ вообще нет и не может быть диалектов, т.к. есть ANSI\ISO\IEC 14882.
P.S. Трудящиеся скандируют: "hello world на Обероне -- в студию!"
Просмотрел темы... немного думал...
Там начинается неплохой холи вар Оберон vs C++.
Интересно будет почитать на досуге.
А вот мой любимый .нет заслужил комплимент от самих последователей дедушки Вирта:
".NET вообще тяготеет к паскалевким концепциям с с-шным синтаксисом", так что я теперь спокоен
Чтож, одной развлекаловкой с псевдопрограммистским уклоном в инете стало больше(наряду с отличным сайтом http://www.linux.org.ru/index.jsp )...
Здравствуйте, Oyster, Вы писали:
O>Я преклоняюсь перед автором этих строк! Не то что я, бездырь, — за два года ни черта .NET FW не знаю...
Советую Вам поразмышлять над этим своим утверждением хотя бы одну минуту.
(Что такое одна минута, когда только на .NET уходят годы?)
А иронизировать-то мы все мастера.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Nickolay Ch, Вы писали:
NC>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве...
Забыл написать что всего то за 1 год.
sch>У нас есть значительный опыт использования языков C++ (Borland C++ Builder, GCC) и Delphi.
sch>Дорогие коллеги! Ничего личного, но Borland C++ Builder -- это не один из "языков C++", это среда разработки; а GCC -- это вообще набор компиляторов от GNU.
Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
sch>У C++ вообще нет и не может быть диалектов, т.к. есть ANSI\ISO\IEC 14882.
Тем не менее они есть. Или вы хотите сказать, что C++ везде одинаков ?
Здравствуйте, Nickolay Ch, Вы писали:
NC>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве...
Действительно. Вот ведь глупость какая, ха-ха!
А то, что за этой насмешкой стоит очевидный факт, что язык Си++ нельзя выучить в совершенстве за 1 год (и за два, и за три, и вообще нельзя ) принимается как должное.
Вот так вот проводят свои лучшие годы серьезные люди, и это даже не насмешка. Это сочувствие.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
SJA>Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
Язык — Object Pascal. Delphi — это все же среда разработки
Здравствуйте, Nickolay Ch, Вы писали:
NC>>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве... NC>Забыл написать что всего то за 1 год.
Мое имхо в том, что изучить C++ в совершенстве может только разработчик C++ компилятора.
Может быть человек, о котором идет речь написал свой компилятор C++?
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Алексей, рад тебя слышать.
NC>>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве...
AVC>Действительно. Вот ведь глупость какая, ха-ха! AVC>А то, что за этой насмешкой стоит очевидный факт, что язык Си++ нельзя выучить в совершенстве за 1 год (и за два, и за три, и вообще нельзя ) принимается как должное. AVC>Вот так вот проводят свои лучшие годы серьезные люди, и это даже не насмешка. Это сочувствие.
Ну например, ни один уважающий себя физик не скажет, что он выучил физику в совершенстве, и будет прав. При этом физики, как правило, действительно серьезные люди, и именно физике они посвящают свои лучшие годы. Их ведь ты не жалеешь?
AVC>Действительно. Вот ведь глупость какая, ха-ха! AVC>А то, что за этой насмешкой стоит очевидный факт, что язык Си++ нельзя выучить в совершенстве за 1 год (и за два, и за три, и вообще нельзя ) принимается как должное. AVC>Вот так вот проводят свои лучшие годы серьезные люди, и это даже не насмешка. Это сочувствие.
Вы не поверите, но сносно программировать на C++ можно научиться за пару недель; многие останавливаются в своем развитии на этом уровне, ибо этот уровень достаточен для написания серьезных программ.
Видимо, предметом спора стала разница в понимании терминалогии. Знать C++ означает знать наизусть весь текст стандарта, понимать его и уметь применять на практике; естественно, что это не воможно из-за объема информации, который придется выучить.
Но, как отмечали замечательные мастера David Vandervoode и Nicolai Josuttis в своей превосходной монографии, посвященной шаблонам C++, книге, перегруженной деталями и часто малозначительными правилами, "многое в C++ интуитивно-понятно и просто, но при этом есть сотни правил, которые заставляют язык вести себя именно таким образом".
Так что миф о сложности C++ это всего лишь миф.
P.S. Покажите пожалуйста реализацию какой-нибудь алгоритмически-сложной задачи на Обероне, будте добры. Хотя бы пузырьковую сортировку. Ей богу, очень интересно.
Чтобы разъяснить, приведу пример. У меня есть друг по имени Саня.
Саня выучил несколько аккордов на шестиструнной гитаре, ля-минор,
ре-минор, до-мажор, и фа-мажор, но реже, ибо для того, чтобы взять
фа-мажор нужно использовать прием барре. Саня знает тысячи современных
песен, в любой тусовке он "в тему", т.к. может сносно сыграть практически
любую песню, какую вы захотите. И если вы спросите у Сани умеет ли он
играть на гитаре, то он вероятно скажет что он виртуоз, и что еще
он гений бас-гитары и кудесник барабанов.
А вот если вы спросите у Дейва Гилмора, умеет ли он играть на гитаре,
то он наверняка скажет что у него изредка получается хороший бенд
в Shine On You Creazy Diamond (Part II).
И, что характерно, Саня над ним обязательно посмеется. Потому что
Саня не знает что такое Pink Floyd, и вообще Саня классный гитарист,
он же знает три с половиной аккорда.
Самое смешное, что Саня будет по своему прав, ибо D.G. и Саня -- это
два совершенно различных масштаба. И вероятно, Саня будет говорить
что играть как D.G. -- это слишком сложно, тут много граблей, и даже
иногда приходиться напрягать мозг, чтобы хорошо сыграть, в то время как
фанерная гитара и три аккорда -- это наш выбор, потому что деревенские
девченки от этой комбинации без ума.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте!
СГ>Теперь у оберонщиков, наконец-то, появилась своя "песочница": СГ>http://metasystems.ru/blackbox/frm/
СГ>С уважением, СГ>Сергей Губанов
А почему было им не выделить здесь отдельную песочницу?
Поймите, что никто не утверждает что Oberon сам по себе плох.
Точно так же, как никто не утверждает что BlackBox сам по себе плох.
И никто не будет говорить что красный Fender Stratocaster с сериным
номером DG00001 сам по себе плох -- ведь на нем можно сыграть то, что
заставляет миллионы сердец по всему миру биться чаще.
А вы, почему то беретесь говорить, что C++ плох, дескать он труден.
Помилуйте! Ведь он гарантированно позволяет добиться таких результатов!
Вероятно, на нем написано более чем 90 процентов софта, которым вы пользуйтесь
ежедневно.
Качественного, дешевого, классного софта. Прямо здесь и прямо сейчас.
И пока вы здесь, расписываясь в своем невежестве и незнании поносите
этот язык, миллионы талантливых программистов по всему миру с удовольствием
программируют на нем.
Прямо здесь и прямо сейчас.
Засим, хотелось бы попросить прощения за некоторую жесткость в рассуждениях
и высказываниях, но что делать -- такова истина, а с ней не поспоришь.
Здравствуйте, CrystaX, Вы писали:
CX>Здравствуйте, AVC, Вы писали:
CX>Алексей, рад тебя слышать.
Аналогично, Дмитрий!
CX>Ну например, ни один уважающий себя физик не скажет, что он выучил физику в совершенстве, и будет прав. При этом физики, как правило, действительно серьезные люди, и именно физике они посвящают свои лучшие годы. Их ведь ты не жалеешь?
Однако физика не создает искусственных трудностей.
Кроме того, физика — наука (а наука, как известно, никогда не познает предмет до конца).
А язык программирования — всего лишь один из инструментов. Он не должен "заслонять" собой задачу.
Чтобы пояснить свою мысль, я немного "трансформирую" текст обычного объявления для приема программистов на работу.
Получится что-нибудь вроде:
Требуется специалист, владеющий карандашом.
Желателен опыт владения авторучкой.
Владение языком — в совершенстве (чтобы наклеивать марки ).
И вот примерно это (утрированно, конечно) мы здесь с таким жаром обсуждаем.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
CX>>Алексей, рад тебя слышать.
AVC>Аналогично, Дмитрий!
CX>>Ну например, ни один уважающий себя физик не скажет, что он выучил физику в совершенстве, и будет прав. При этом физики, как правило, действительно серьезные люди, и именно физике они посвящают свои лучшие годы. Их ведь ты не жалеешь?
AVC>Однако физика не создает искусственных трудностей. AVC>Кроме того, физика — наука (а наука, как известно, никогда не познает предмет до конца).
Языки программирования — это тоже отнюдь не сельское хозяйство.
AVC>А язык программирования — всего лишь один из инструментов. Он не должен "заслонять" собой задачу.
Видимо, в этом и есть корень всех противоречий. Для меня язык — не только (и даже не столько) инструмент. Для меня язык представляет исследовательский интерес. А проекты, которые выполняются с его помощью — полигон для испытаний его возможностей.
Можно до хрипоты спорить о правильности такого подхода, но я не хочу. В конце-концов, я таков, каков я есть. И находится достаточное количество работодателей, которых мой подход устраивает.
Вот я честно пытался разобраться с Обероном, но "не поймал кайфа". Да, наверное, у меня не хватило терпения (да и других дел много), но вот что интересно — C++ меня "зацепил" почти сразу же после начала его изучения. Ты посмотри на высказывания других C++ программистов — ведь очень многие говорят о C++ в том же духе. C++ — интересный язык. Я хочу, чтобы работать было интересно. От Оберона же веет какой-то затхлостью, прости господи. Сразу же прошу не возражать на это заявление — это исключительно мое мнение и касается оно интересности языка как такового и ничего более.
AVC>Чтобы пояснить свою мысль, я немного "трансформирую" текст обычного объявления для приема программистов на работу. AVC>Получится что-нибудь вроде: AVC>
AVC>Требуется специалист, владеющий карандашом.
AVC>Желателен опыт владения авторучкой.
AVC>Владение языком — в совершенстве (чтобы наклеивать марки ).
Мне несимпатично такое отношение к работе. Оно не предполагает развития. Я на такую работу не пойду.
AVC>И вот примерно это (утрированно, конечно) мы здесь с таким жаром обсуждаем.
Нееет! Это не мы обсуждаем! Это ты обсуждаешь! А я — обсуждаю совсем другое. А Евгений, например, — что-то и вовсе третье. Пока мы это не поймем — так и будем "с жаром" обсуждать разные вещи.
Здравствуйте, sch, Вы писали:
sch>А вы, почему то беретесь говорить, что C++ плох, дескать он труден.
Я так понял — этот пост адресован мне.
Так что отвечаю.
Сразу вопрос: отрицаете ли Вы, что Си++ — большой и трудный язык?
Я участвовал в достаточно серьезных проектах на Си++.
Приведу Вам типовую шутку моих коллег (и фанатов Си++):
Си++ был создан, чтобы отсечь лишних людей от индустрии.
sch>Помилуйте! Ведь он гарантированно позволяет добиться таких результатов! sch>Вероятно, на нем написано более чем 90 процентов софта, которым вы пользуйтесь sch>ежедневно.
На RSDN периодически возникает тема "сравнительной популярности" языков программирования.
Проводятся собственные опросы, приводятся также результаты чужих.
Согласно этим данным, Си++ не является самым популярным языком программирования.
Поэтому согласитесь, что "более 90 процентов софта" — некоторый перебор.
sch>Качественного, дешевого, классного софта. Прямо здесь и прямо сейчас.
Как понимать "дешевизну" софта?
Си++ — сложный язык, обучение занимает много времени. (Это данные самих сторонников Си++.)
Как же такой софт может быть дешевым?
sch>И пока вы здесь, расписываясь в своем невежестве и незнании поносите sch>этот язык, миллионы талантливых программистов по всему миру с удовольствием sch>программируют на нем.
Увы. Расписываюсь в невежестве.
Хотя все же с некоторым (вероятно, недостаточным; но у кого достаточные познания в Си++? ) знанием предмета.
sch>Засим, хотелось бы попросить прощения за некоторую жесткость в рассуждениях sch>и высказываниях, но что делать -- такова истина, а с ней не поспоришь.
Never mind!
Ясно, что Вам нравится Си++, а я невольно задел Ваши чувства. Ваш выстрел, граф!
А вот насчет истины Вы, пожалуй, несколько погорячились!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Давайте проведем небольшой экскурс в историю. Вспомните, уважаемый
человек заводит тему про printf(), в которой поносит C++ и обвиняет
его во всех смертных грехах, топик переходит в 12-страничный флейм который
не приносит ничего толкового. А вот другой человек, встретившись с той же ошибкой
подумает: "при использовании printf() надо быть внимательнее", вот и все.
Или вот другой персонаж решает войти в стройные ряды emacs-оидов, он качает,
пытается все установить и настроить, у него ничего не получается и он
заводит тему с обидным названием "xemacs-помойка", который также переходит
в мощный многостраничный флейм, заканичвающийся матом и перемыванием косточек.
А другой человек скачивает тот же дистрибутив, устанавливает, у него ничего
не получается, он читает документацию, снова пробует, снова читает, и вот --
чудо -- все работает!
Если хотите увидеть невежество в абсолюте, безграничное и бесконечное
столпотворение невежд -- посмотрите форум на gamedev.ru.
Так вот, мое программное заявление заключается в том, что нет плохих
инструментов. Есть замечательная пословица: "нечего не зеркало пенять
коли рожа кривая".
"Тысячи людей с удовольствием программируют на C++, почему у меня это не
получается?"
"Тысячи людей с удовольствием используют Emacs, почему у меня это не
получается?"
Я приведу небольшой пример. Некоторое время назад к нам в контору взяли
человека, с которым я должен был работать. Когда он стал спрашивать меня
про разницу между виртуальными и статическими функциями, я удивился: как
могли взять человека, который не знает даже этого. Но когда он стал писать
сложнейшие части системы, моему удивлению небыло пределов.
Именно поэтому, я утверждаю что C++ простой и интуитивный язык. Совершенно
не нужно знать тонкости ADL, чтобы писать нужные и полезные программы. Точка.
У меня недавно был совершенно замечательный опыт общения с конечным
пользователем. Он рассказывал, что в один прекрасный момент начальство
решило обновить их базу данных и вот молодые люди в очках с высокими
лбами написали новую базу данных на .NET. База оказалась неудобной и полной
ошибок и они вернулись к старой, проверенной базе на FoxPro. Как выразился
конечный пользователь, "эта база данных умненькая, проводишь сканером, а она
все заносит в базу"
Но почему старая база данных оказалась лучше новой? FoxPro лучше .NET? Не
верю. Что помешало программистам с высокими лбами в очках написать "умненькую"
базу данных? Я думаю, что все дело в них самих.
Фишка в том, что у каждого инструмента есть правильный способ использования.
Фишка в том, что инструмент может не понравиться программисту из чисто
субъективных причин.
Фишка в том, что на языке конкретному проргаммисту может быть трудно выразить
свои мысли, а может быть, что мыслей нет вообще.
Отношение конкретного программиста к конкретному языку может быть основано на
сотне различных факторов, объективных и субъективных, на вкусе, способе мышления,
на настроении, которое было у человека, когда он столкнулся с языком, на
царящей в этот момент парадигме и идеях программирования.
Потрясающе малое количество людей могут делать выводы независимо.
И, самая главная истина заключается в том, что иногда при работе с техникой
возникает раздражение, и ни в коем случае не стоит позволять раздражению
формировать свое отношение к технике.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Nickolay Ch, Вы писали:
NC>>>Действительно, нельзя же иронизировать над человеком, изучивший С++(вообще то один из самых сложных промышленных языков) в совершенстве... NC>>Забыл написать что всего то за 1 год.
E>Мое имхо в том, что изучить C++ в совершенстве может только разработчик C++ компилятора. E>Может быть человек, о котором идет речь написал свой компилятор C++?
В нашей необъятной стране не так много людей написало компилятор C++. А хороший компилятор C++ и того меньше. Один такой работает в Цюрихе, зовут Евгением Зуевым. Сейчас вроде дописывает компилятор Зоннона. Что-то Оберон начинает все больше мне напоминать черную дыру — туда уходят от C++, а обратно к родным пенатам уже не возвращаются...
Здравствуйте, AVC, Вы писали:
AVC>Здравствуйте, sch, Вы писали:
sch>>А вы, почему то беретесь говорить, что C++ плох, дескать он труден.
AVC>Я так понял — этот пост адресован мне. AVC>Так что отвечаю. AVC>Сразу вопрос: отрицаете ли Вы, что Си++ — большой и трудный язык? AVC>Я участвовал в достаточно серьезных проектах на Си++. AVC>Приведу Вам типовую шутку моих коллег (и фанатов Си++): AVC>
AVC>Си++ был создан, чтобы отсечь лишних людей от индустрии.
sch>>Помилуйте! Ведь он гарантированно позволяет добиться таких результатов! sch>>Вероятно, на нем написано более чем 90 процентов софта, которым вы пользуйтесь sch>>ежедневно.
AVC>На RSDN периодически возникает тема "сравнительной популярности" языков программирования. AVC>Проводятся собственные опросы, приводятся также результаты чужих. AVC>Согласно этим данным, Си++ не является самым популярным языком программирования. AVC>Поэтому согласитесь, что "более 90 процентов софта" — некоторый перебор.
sch>>Качественного, дешевого, классного софта. Прямо здесь и прямо сейчас.
AVC>Как понимать "дешевизну" софта? AVC>Си++ — сложный язык, обучение занимает много времени. (Это данные самих сторонников Си++.) AVC>Как же такой софт может быть дешевым?
sch>>И пока вы здесь, расписываясь в своем невежестве и незнании поносите sch>>этот язык, миллионы талантливых программистов по всему миру с удовольствием sch>>программируют на нем.
AVC>Увы. Расписываюсь в невежестве. AVC>Хотя все же с некоторым (вероятно, недостаточным; но у кого достаточные познания в Си++? ) знанием предмета.
sch>>Засим, хотелось бы попросить прощения за некоторую жесткость в рассуждениях sch>>и высказываниях, но что делать -- такова истина, а с ней не поспоришь.
AVC>Never mind! AVC>Ясно, что Вам нравится Си++, а я невольно задел Ваши чувства. Ваш выстрел, граф! AVC>А вот насчет истины Вы, пожалуй, несколько погорячились!
Господа гусары, позвольте мадемуазель вклиниться в ваш горячий спор. Пошто вы ругаете C++ ? Хороший язык. Даже я его освоила. А назовите мне хотя бы одну мадемуазель, которая освоила Оберон (я не в счет)? И приведите примерчик. То-то...
Здравствуйте, Mamut, Вы писали:
SJA>>Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
M>Язык — Object Pascal. Delphi — это все же среда разработки
что вы, что вы. Уж несколько лет как в Борланде языка Object Pascal нет. Он теперь зовется Delphi. Отстаете от жизни, однако
Здравствуйте, sch, Вы писали:
sch>После прочтения темы http://blackbox.metasystems.ru/forum/viewtopic.php?t=5 я все-таки заинтересовался, что же представляет из себя этот Оберон? И почему потомки должны быть им благодарны?
sch>(Да и имя какое хорошее Вирт подобрал: Оберон -- это царь эльфов.)
sch>Захожу на главную страничку сайта и вижу...
sch>
sch>У нас есть значительный опыт использования языков C++ (Borland C++ Builder, GCC) и Delphi.
sch>Дорогие коллеги! Ничего личного, но Borland C++ Builder -- это не один из "языков C++", это среда разработки; а GCC -- это вообще набор компиляторов от GNU. У C++ вообще нет и не может быть диалектов, т.к. есть ANSI\ISO\IEC 14882.
sch>P.S. Трудящиеся скандируют: "hello world на Обероне -- в студию!"
Мне как ярой поклоннице C++ горько слышать от своего коллеги такие слова. Почему у моего любимца не могут быть диалекты? Вы хотите сказать, что C++ в реализации Microsoft это стандарт. А когда он ему соответствовал? А Борланд когда соответствовал и на сколько? А какому из них: ISO 14882:1998 или ISO 14882:2003? А знаете ли вы про работы над C++0x ? А что такое GNU C++? Печально, однако
Шапокляк
Re[10]: Теперь у Оберонщиков есть своя "песочница"
sch wrote: > Или вот другой персонаж решает войти в стройные ряды emacs-оидов, он качает, > пытается все установить и настроить, у него ничего не получается и он > заводит тему с обидным названием "xemacs-помойка", который также переходит > в мощный многостраничный флейм, заканичвающийся матом и перемыванием > косточек. > А другой человек скачивает тот же дистрибутив, устанавливает, у него ничего > не получается, он читает документацию, снова пробует, снова читает, и вот -- > чудо -- все работает!
Для честности скажу, что как мне показалось, "вот другой персонаж"
снял-таки желаемые сливки — если ему надо было найти много надстроек к
emacs, то в начале спора emacs-оиды дали ему все нужные ему ссылки. А
XEmacs-оиды указали на многие граблеопасные действия, которые надо было
делать по-другому. Впрочем, ему было интересно не это, и сливки он
снимал с сообщений ViM-щиков.
А во "всё работает" я поверить не могу. Всё работать не может —
нет предела совершенству.
AVC wrote:
> Как понимать "дешевизну" софта? > Си++ — сложный язык, обучение занимает много времени. (Это данные > самих сторонников Си++.) > Как же такой софт может быть дешевым?
Тут ведь как: "Дешовый, быстрый, качественный — выбирай любые два". С++
ориентирован на два последние варианта.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[10]: Теперь у Оберонщиков есть своя "песочница"
sch wrote:
> Или вот другой персонаж решает войти в стройные ряды emacs-оидов, он > качает, > пытается все установить и настроить, у него ничего не получается и он > заводит тему с обидным названием "xemacs-помойка", который также переходит > в мощный многостраничный флейм, заканичвающийся матом и перемыванием > косточек. > А другой человек скачивает тот же дистрибутив, устанавливает, у него > ничего > не получается, он читает документацию, снова пробует, снова читает, и > вот -- > чудо -- все работает!
Но-но, не надо передергивать.
> "Тысячи людей с удовольствием программируют на C++, почему у меня это не > получается?"
Может быть и что С++ не подходит для данной задачи. Для каких задач С++
не подходит и почему — это уже другой вопрос.
> "Тысячи людей с удовольствием используют Emacs, почему у меня это не > получается?"
Здравствуйте, шапокляк, Вы писали:
E>>Мое имхо в том, что изучить C++ в совершенстве может только разработчик C++ компилятора. E>>Может быть человек, о котором идет речь написал свой компилятор C++?
Ш>В нашей необъятной стране не так много людей написало компилятор C++. А хороший компилятор C++ и того меньше. Один такой работает в Цюрихе, зовут Евгением Зуевым. Сейчас вроде дописывает компилятор Зоннона. Что-то Оберон начинает все больше мне напоминать черную дыру — туда уходят от C++, а обратно к родным пенатам уже не возвращаются...
Ш>[Шапокляк]
Нет, ну это же надо, а?!
Один единственный человек в нашей необъятной стране знал Си++ в совершенстве (по определению eao197).
И тот бросил. "Слишком для меня этот язык прост," — говорит.
Чаю, запи-и-ил с тоски-то, горемычный...
И ушел — неведомо куды, к каким-то оберонам...
Это же, можно сказать, трагедь — национального масштаба.
Все, режу лук, сейчас польются слезы...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
SJA>>>Я думаю, что они в скобках просто указали конкретные IDE с которыми работали, а не языки. А вот насчёт Delphi не знаю: IDE это или язык тоже так называется ?
M>>Язык — Object Pascal. Delphi — это все же среда разработки
Ш>что вы, что вы. Уж несколько лет как в Борланде языка Object Pascal нет. Он теперь зовется Delphi. Отстаете от жизни, однако
Неужели решились переименовать? Просто в хелпе (правда, еще в годы 6-го Билдера) повсюду был Object Pascal.
M>>Неужели решились переименовать? Просто в хелпе (правда, еще в годы 6-го Билдера) повсюду был Object Pascal.
P>Билдера? Может, Delphi? Хотя, Builder, вроде, тоже где-то внутри Pascal-компилятор прячет.
Я имел в виду в то же время, примерно. А Билдер поставляется с компилятором и дебаггером паскалевским — это для того, чтобы дельфийные компоненты цеплять.
Здравствуйте, Mamut, Вы писали:
M>Я имел в виду в то же время, примерно. А Билдер поставляется с компилятором и дебаггером паскалевским — это для того, чтобы дельфийные компоненты цеплять.
Значит, правда. Я ни с Delphi, ни с Builder нормально не работал. Так, ковырял пару проектов на Builder, причем очень недолго. Но отложилось, что там Паскаль внутри прячется. В общем, логично.
Здравствуйте, CrystaX, Вы писали:
CX>Вот я честно пытался разобраться с Обероном, но "не поймал кайфа". Да, наверное, у меня не хватило терпения (да и других дел много), но вот что интересно — C++ меня "зацепил" почти сразу же после начала его изучения. Ты посмотри на высказывания других C++ программистов — ведь очень многие говорят о C++ в том же духе. C++ — интересный язык. Я хочу, чтобы работать было интересно. От Оберона же веет какой-то затхлостью, прости господи. Сразу же прошу не возражать на это заявление — это исключительно мое мнение и касается оно интересности языка как такового и ничего более.
Я честно пытался писать карандашом но "не поймал кайфа", уж какой-то он затхлый. Другое дело писать чернильной ручкой. Она меня сразу зацепила. Её надо самостоятельно заправлять чернилами. Следить чтобы чернила не протекали, и чтобы по неосторожности не получилось кляксы. После написания текста чернильной ручкой, бумагу надо просушить — чернила должны высохнуть. Чернильная ручка — интересная ручка! Не то что какой-то там неинтересный карандаш. Мне интересно писать чернильной ручкой!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Я честно пытался писать карандашом но "не поймал кайфа", уж какой-то он затхлый. Другое дело писать чернильной ручкой. Она меня сразу зацепила. Её надо самостоятельно заправлять чернилами. Следить чтобы чернила не протекали, и чтобы по неосторожности не получилось кляксы. После написания текста чернильной ручкой, бумагу надо просушить — чернила должны высохнуть. Чернильная ручка — интересная ручка! Не то что какой-то там неинтересный карандаш. Мне интересно писать чернильной ручкой!
Сергей, а чей это (с)? Просто интересно — текст понравился
Здравствуйте, sch, Вы писали:
sch>P.S. Покажите пожалуйста реализацию какой-нибудь алгоритмически-сложной задачи на Обероне, будте добры. Хотя бы пузырьковую сортировку. Ей богу, очень интересно.
Быстрое дискретное преобразование Фурье подойдёт?
MODULE SignalsFFT;
IMPORT Math, SignalsMath;
CONST
Pi = SignalsMath.Pi;
chop_const = 1.0E-15;
TYPE
Complex = SignalsMath.Complex;
Array* = ARRAY OF Complex;
ReversIndex = POINTER TO RECORD
p: INTEGER;
index: POINTER TO ARRAY OF INTEGER;
next: ReversIndex
END;
Trig = POINTER TO RECORD
N: INTEGER;
cos, sin: POINTER TO ARRAY OF REAL;
next: Trig
END;
VAR
ReversIndexList: ReversIndex;
trigList, invTrigList: Trig;
PROCEDURE GetReverseIndexTable(p: INTEGER): POINTER TO ARRAY OF INTEGER;
VAR u: ReversIndex; i, n: INTEGER;
BEGIN
u := ReversIndexList;
WHILE (u # NIL) & (u.p # p) DO u := u.next END;
IF u = NIL THEN
NEW(u); NEW(u.index, p); u.p := p;
n := SignalsMath.Log(2*p - 1);
FOR i := 0 TO p-1 DO u.index[i] := ORD( SignalsMath.Reverse(BITS(i), n) ) END;
u.next := ReversIndexList; ReversIndexList := u
END;
RETURN u.index
END GetReverseIndexTable;
PROCEDURE BitReverseCopy (IN input: Array; OUT output: Array);
VAR i, j, p: INTEGER; a,b: Complex; index: POINTER TO ARRAY OF INTEGER;
BEGIN p := LEN(input) DIV 2;
index := GetReverseIndexTable(p);
FOR i := 0 TO p-1 DO
j := index[i]; a := input[i]; b := input[i+p];
output[j].re := a.re + b.re; output[j].im := a.im + b.im;
output[j+1].re := a.re - b.re; output[j+1].im := a.im - b.im;
END
END BitReverseCopy;
PROCEDURE fft4 (direction: BOOLEAN; VAR val: Array);
VAR i0, i1, i2, i3, N: INTEGER; z0, z1, z2, z3: Complex;
BEGIN N := LEN(val); i0 := 0; i1 := 1; i2 := 2; i3 := 3;
IF direction THEN
WHILE i3 < N DO
z0 := val[i0]; z1 := val[i1]; z2 := val[i2]; z3 := val[i3];
val[i0].re := z0.re + z2.re; val[i0].im := z0.im + z2.im;
val[i1].re := z1.re - z3.im; val[i1].im := z1.im + z3.re;
val[i2].re := z0.re - z2.re; val[i2].im := z0.im - z2.im;
val[i3].re := z1.re + z3.im; val[i3].im := z1.im - z3.re;
INC(i0, 4); INC(i1, 4); INC(i2, 4); INC(i3, 4);
END
ELSE
WHILE i3 < N DO
z0 := val[i0]; z1 := val[i1]; z2 := val[i2]; z3 := val[i3];
val[i0].re := z0.re + z2.re; val[i0].im := z0.im + z2.im;
val[i1].re := z1.re + z3.im; val[i1].im := z1.im - z3.re;
val[i2].re := z0.re - z2.re; val[i2].im := z0.im - z2.im;
val[i3].re := z1.re - z3.im; val[i3].im := z1.im + z3.re;
INC(i0, 4); INC(i1, 4); INC(i2, 4); INC(i3, 4);
END
END
END fft4;
PROCEDURE GetCosSin(direction: BOOLEAN; N: INTEGER; OUT cos, sin: POINTER TO ARRAY OF REAL);
VAR n: INTEGER; coeff: REAL; u: Trig;
BEGIN
N := N DIV 2;
IF direction THEN u := trigList ELSE u := invTrigList END;
WHILE (u # NIL) & (u.N # N) DO u := u.next END;
IF u = NIL THEN
IF direction THEN coeff := Pi / N ELSE coeff := - Pi / N END;
NEW(cos, N); NEW(sin, N);
FOR n := 0 TO N-1 DO cos[n] := Math.Cos(coeff*n); sin[n] := Math.Sin(coeff*n) END;
NEW(u); u.N := N; u.cos := cos; u.sin := sin;
IF direction THEN u.next := trigList; trigList := u ELSE u.next := invTrigList; invTrigList := u END;
ELSE
cos := u.cos; sin := u.sin
END
END GetCosSin;
PROCEDURE Mult(VAR array: Array; multiplier: REAL);
VAR i: INTEGER;
BEGIN
FOR i := 0 TO LEN(array)-1 DO
array[i].re := array[i].re * multiplier;
array[i].im := array[i].im * multiplier;
END
END Mult;
PROCEDURE Check(IN input: Array; OUT output: Array);
VAR N: INTEGER;
BEGIN N := LEN(input);
ASSERT(SignalsMath.IsPower2(N), 20);
ASSERT(LEN(output) = N, 21);
END Check;
PROCEDURE FFT (direction: BOOLEAN; IN input: Array; OUT output: Array);
VAR np, d, n, k, m, p2, p, N, f: INTEGER; a, b, t: Complex; cos, sin: REAL;
Cos, Sin: POINTER TO ARRAY OF REAL;
BEGIN
Check(input, output);
N := LEN(input);
BitReverseCopy(input, output);
fft4(direction, output);
GetCosSin(direction, N, Cos, Sin);
p := 4;
WHILE p < N DO
p2 := 2*p; m := 0; d := N DIV p2;
WHILE m < N DO
f := 0;
FOR k := 0 TO p-1 DO
n := m + k; a := output[n]; np := n+p; t := output[np];
cos := Cos[f]; sin := Sin[f]; INC(f, d);
b.re := cos*t.re - sin*t.im; b.im := sin*t.re + cos*t.im;
output[n].re := a.re + b.re; output[n].im := a.im + b.im;
output[np].re := a.re - b.re; output[np].im := a.im - b.im;
END;
INC(m, p2);
END;
p := p2;
END;
Mult(output, 1.0/Math.Sqrt(N))
END FFT;
PROCEDURE Direct* (IN signal: Array; OUT spectrum: Array);
BEGIN FFT(TRUE, signal, spectrum)
END Direct;
PROCEDURE Inverse* (IN spectrum: Array; OUT signal: Array);
BEGIN FFT(FALSE, spectrum, signal)
END Inverse;
END SignalsFFT.
MODULE SignalsMath;
CONST
Pi* = 3.1415926535897932384626433832795028841971693;
Epsilon* = 1.0E-15;
TYPE
Complex* = RECORD
re*, im*: REAL
END;
PROCEDURE ChopReal* (VAR x: REAL);
BEGIN
IF ABS(x) <= Epsilon THEN x := 0.0 END
END ChopReal;
PROCEDURE ChopComplex* (VAR z: Complex);
BEGIN
IF ABS(z.re) <= Epsilon THEN z.re := 0.0 END;
IF ABS(z.im) <= Epsilon THEN z.im := 0.0 END
END ChopComplex;
PROCEDURE ChopComplexArray* (VAR z: ARRAY OF Complex);
VAR n: INTEGER;
BEGIN
FOR n := 0 TO LEN(z)-1 DO
IF ABS(z[n].re) <= Epsilon THEN z[n].re := 0.0 END;
IF ABS(z[n].im) <= Epsilon THEN z[n].im := 0.0 END
END
END ChopComplexArray;
PROCEDURE Log* (n: INTEGER): INTEGER;
VAR i, r: INTEGER;
BEGIN r := 0; WHILE n > 0 DO n := ASH(n, -1); INC(r) END; RETURN r
END Log;
PROCEDURE IsPower2* (N: INTEGER): BOOLEAN;
VAR i, n: INTEGER; s: SET;
BEGIN s := BITS(N); n := 0;
FOR i := 0 TO 31 DO
IF i IN s THEN INC(n) END
END;
RETURN n = 1
END IsPower2;
PROCEDURE RoundToPower2* (N: INTEGER): INTEGER;
BEGIN
RETURN ASH(1, Log(N))
END RoundToPower2;
PROCEDURE Reverse* (s: SET; Count: INTEGER): SET;
VAR i: INTEGER; r: SET;
BEGIN r := {}; DEC(Count);
FOR i := 0 TO Count DO
IF i IN s THEN INCL(r, Count - i) END
END; RETURN r
END Reverse;
END SignalsMath.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, sch, Вы писали:
sch>>P.S. Покажите пожалуйста реализацию какой-нибудь алгоритмически-сложной задачи на Обероне, будте добры. Хотя бы пузырьковую сортировку. Ей богу, очень интересно.
СГ>Быстрое дискретное преобразование Фурье подойдёт?
Не флейма ради, а перфоманс тест можно, по сравнению с скажем Intell Performance Primitives и с той же ралазизацией на плюсах в лоб портированой, просто интрересно насколько качественный код генерит компилятор Оберона.
Здравствуйте, IO, Вы писали:
IO>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Здравствуйте!
СГ>>Теперь у оберонщиков, наконец-то, появилась своя "песочница": СГ>>http://metasystems.ru/blackbox/frm/
СГ>>С уважением, СГ>>Сергей Губанов IO>А почему было им не выделить здесь отдельную песочницу?
Дык в чём проблема, если наберётся их критическая маса, будут експерты желающие модерировать и в первое время отвечать на ответы.
Но тогда и я по Python-у хочу, думаю нас даже побольше оберонщиков наберётся.