Re[22]: Goto's are evil?
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.12.05 23:47
Оценка:
eao197 wrote:
>
> Нет, работа замечательная, долго к такой стремился.
> Меня призраки прошлого гнетут. Когда я решил повторить достижение
> Константина Книжника <http://www.garret.ru/~knizhnik/index.html&gt; и
> защитить дисертацию по собственноручно написанной объектной СУБД (Косте
> удалось это сделать по своей СУБД GOODS
> <http://www.garret.ru/~knizhnik/goods.html&gt;). Никого не интересовали
> технические подробности ее реализации, ее возможности, оснащенность
> утилитами, полезность и реальные внедрения в реальные проекты. Все
> вопросы начинались с количества моих публикаций. Максимум, до чего
> доходило -- это до: "В чем состоит научная новизна?" и "Что было сделано
> лично вами?". Обычно разговор на вопросе "научной новизны" терял свою
> актуальность. А апофиозом моего обучения в аспирантуре был вопрос от

Ну вообще, по-моему, это правильно. Диссертация все же должна быть про
науку, а не про то, какую замечательную программу можем мы написать. И
оцениваться диссертация, по-моему, должна в первую очередь с точки
зрения научного вклада.
Posted via RSDN NNTP Server 2.0
Re[17]: Goto's are evil?
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.12.05 23:59
Оценка:
reductor wrote:
>
> Вообще же, несмотря на то, что в реальной жизни можно даже найти
> параллели между С++ и Haskell, реальная их семантика различается
> настолько, что на полном серьезе ее сравнивать, это очень смело

Я бы предложил относиться к C++ как к двум разным языкам, с разной
парадигмой, причудливо соединенным в одном языке.

Один язык — это C с классами. Другой — это темплейты.

C с классами на Хаскель, конечно, не похож. Но вот темплейты напоминают
пародию на Хаскель — сильно урезанную и с ужасным синтаксисом.
Posted via RSDN NNTP Server 2.0
Re[10]: Goto's are evil?
От: Pzz Россия https://github.com/alexpevzner
Дата: 02.12.05 00:01
Оценка:
AVC wrote:
>
> Pzz>Вы недооцениваете влияние ML, например, на Вашу повседневную жизнь (если
> Pzz>Вы, конечно, программер)
>
> Разве что на будущую?
>
> Pzz>Ну вот, например, темплейты в C++ — пародия на ML (или, скорее, на
> Pzz>Haskell, т.к. они ленивые).
>
> ИМХО, этой пародией детей пугать можно...

Но влияние-то оказывает
Posted via RSDN NNTP Server 2.0
Re[11]: Goto's are evil?
От: AVC Россия  
Дата: 02.12.05 00:34
Оценка: 1 (1) +1
Здравствуйте, Pzz, Вы писали:

>> ИМХО, этой пародией детей пугать можно...


Pzz>Но влияние-то оказывает


Меня как раз тут в свое время "уличали" (eao197 и CrystaX), что я пишу на Си с классами, а не на "современном" Си++ (с шаблонами и большим boost-ом).
Так что на меня шаблоны оказывают весьма умеренное влияние (в основном — в виде ночных кошмаров).
А ML — вообще никакого. (Допускаю, что обо этом как раз следует пожалеть).
Чтобы не выглядеть совсем уж троглодитом, немного поясню свою позицию.
Вот здесь Cyberax писал (в посте к reductor), что знание математики, алгоритмов и т.д. должно быть где-то в "background".
Как видно, в foreground он любовно разместил ("современный") Си++ и подобные ему языки. Весь этот, с позволения сказать, инструментарий съедает 90% (а то и более) времени программиста. И выходит так, что хвост виляет собакой.
Я же полагаю, что как раз язык следует разместить в background. А то и вообще в "подкорке", чтобы не отвлекал от самой задачи.
Вот я и нашел для себя Оберон. Такому дураку, как я, — в самый раз.
Личная производительность (моя, о других не говорю) с Обероном выше.
А если кому-то кажется, что это непрогрессивно или ненаучно, что ж... Краснею до корней волос, но делаю по своему.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[22]: Goto's are evil?
От: Дарней Россия  
Дата: 02.12.05 02:46
Оценка: +1 -1
Здравствуйте, eao197, Вы писали:

E>Меня призраки прошлого гнетут. Когда я решил повторить достижение Константина Книжника и защитить дисертацию по собственноручно написанной объектной СУБД (Косте удалось это сделать по своей СУБД GOODS). Никого не интересовали технические подробности ее реализации, ее возможности, оснащенность утилитами, полезность и реальные внедрения в реальные проекты. Все вопросы начинались с количества моих публикаций. Максимум, до чего доходило -- это до: "В чем состоит научная новизна?" и "Что было сделано лично вами?". Обычно разговор на вопросе "научной новизны" терял свою актуальность. А апофиозом моего обучения в аспирантуре был вопрос от зав.кафедрой: "Это хорошо, что ты занимаешься объектно-ориентированными базами данных, но на что конкретно они у тебя ориентированны?". Хотя дяденька был очень заслуженный и шамповал кандидатов по своему направлению как горячие пирожки. А еще я видел, как эти ученые дяденьки штампуют одну статью за другой, переставляя абзацы из своих старых работ и заставляя аспирантов или дипломников расчитывать для них очередную формулу или переоформляя какой-нибудь график. Поэтому количество публикаций или рейтинг цитирования для меня совершенно пустое место.


любую систему или метод можно извратить и сделать бесполезными
а то, что наука в нашей стране окончательно прогнила и практически ни на что не годится — это и так известный факт
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[23]: Goto's are evil?
От: Andir Россия
Дата: 02.12.05 03:53
Оценка: -2
Здравствуйте, Дарней, Вы писали:

Д>а то, что наука в нашей стране окончательно прогнила и практически ни на что не годится — это и так известный факт


Какая чушь! Прогнила не наука, а максимум — система обучения. А Наука не приемлет государственных границ.

C Уважением, Andir!
using( RSDN@Home 1.2.0 alpha rev. 606 ) { /* Работаем ... */ }
Re[12]: Goto's are evil?
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.12.05 04:00
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>У goto есть минус — очень сложно отслеживать переходы "назад". И

C>вложенные goto тоже страшновато выглядят.
Дело не в страшноватости вида. А в том, что очень трудно определить зависимости. Совершенно неважно, прыгает goto вперед или назад. Проблема в том, что в любую метку ты можешь попасть из неопределенного количества мест, и совершенно непонятно, какие ветки кода к этому моменту были выполнены, и сколько раз. Конечно, goto — не единственный способ запутать программу. Но если ограничиться "безопасным" использованием goto, то оно как раз и сведется к while, if, return.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.12.05 06:39
Оценка: -1
Здравствуйте, z00n, Вы писали:

E>>Никогда не поверю, что C++ можно выучить очень быстро и начать на нем грамотно программировать. Особенно с сегодняшним уклоном в шаблоны, метапрограммирование и expression templates...


Z>На самом деле меня очень удивило замечание про "особенно шаблоны, метапрограммирование и expression templates" . С точки зрения человека, который учился функциональному программированию, шаблоны, метапрограммирование и expression templates — это как раз то, в чем он давно разобрался.


Внимательно прочитай то, что я написал. Попытка использовать метапрограммирование на C++ в духе Scheme или Lisp-а будет приводить, как ты правильно заметил, к

все закричат, что это извращение и среднему труженнику С++ этого ни в жисть не понять

Вот чтобы такого не было, желательно метапрограммировать на C++ так, чтобы это оставался нормальный C++, а не испорченный C++ным синтаксисом Scheme.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[23]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.12.05 06:39
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Ну вообще, по-моему, это правильно. Диссертация все же должна быть про

Pzz>науку, а не про то, какую замечательную программу можем мы написать. И
Pzz>оцениваться диссертация, по-моему, должна в первую очередь с точки
Pzz>зрения научного вклада.

А вот мне интересно, за какие открытия присуждают звания "кандидата технических наук"?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.12.05 06:39
Оценка:
Здравствуйте, z00n, Вы писали:

У меня начинает складываться впечатление, как в топиках Metaprogramming et al
Автор:
Дата: 09.07.05
и Lisp
Автор: fionbio
Дата: 12.07.05
: функциональные языки какие крутые (круче них, понятное дело, только яйца)! Вот почему они мейнстримом не стали понять до сих пор не могу?

Z>Ну, например, вот немного линейной алгебры из домашнего задания первокурсника, который к тому времени уже целых два месяца учится программировать. Если это переписать на boost::mpl и запостить с форум по С++ — все закричат, что это извращение и среднему труженнику С++ этого ни в жисть не понять

Z>
 
Z>(define (dot-product v w)
Z>  (accumulate + 0 (map * v w)))

Z>(define (matrix-*-vector m v)
Z>  (map (lambda (x) (dot-product x v)) m))

Z>(define (transpose m)
Z>  (accumulate-n cons  null  m))

Z>(define (matrix-*-matrix m n)
Z>  (let ((cols (transpose n)))
Z>    (map (lambda (x) (matrix-*-vector cols x)) m)))
Z>


А чего здесь вообще должно делаться? Матрица на матрицу перемножаться?

Ну и сколько Scheme-программисту нужно будет изучать C++ и boost::mpl для того, чтобы сделать то же самое через C++ные expression templates?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[17]: Goto's are evil?
От: Cyberax Марс  
Дата: 02.12.05 06:59
Оценка:
Здравствуйте, reductor, Вы писали:

R>Уфф. Меня аж чуть просветление не хватило. То есть это не баг, а _фича_ Си++ такое управление памятью?

Да, причем она дает достаточно много преимуществ по сравнению с другими языками.

R>Вообще, прежде чем ответить, хочется конечно понять для чего оно вам такое нужно.

R>А то ведь есть такое: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Gc.html
Ну GC. И что? Кого сейчас этим можно удивить?

R>А есть и такое: http://www.research.att.com/projects/cyclone/online-manual/main-screen008.html

// Finally, destroy the key and the region
free_ukey(key);

В морг.

Да и подобное делается с помощью пулов в обычном С++.

R>Но хочется понять долго ли мемори менеджмент в С++ доходил до state-of-the-art, чтобы достигнуть достигать такого — язык, к которому даже GC нормальный не прицепишь. А то мне кажется, идея такого мемори менеджмента мягко говоря не нова.

Почему же, консервативные GC подцепляются без проблем (лично Boehm GC использовал). А С++/CLI вообще рассчитан на точную сборку.

А вот покажите мне, пожалуйста, язык с понятием умных указателей, автоматических объектов, placement new, и при этом не клон С++ (Hint: наиболее близко к этому подходит язык D).


C>>2) Взаимодействие с кодом на С. Где у нас еще есть extern "C"?

R>Хм.
R>С/Objective-C/D/Cyclone ?
C не считаем. Objective-C страдает с управлением памятью, да и недоделаный он вообще какой-то. D — да, но это последователь С++.

Cyclone — слишком мало возможностей. Нет OOP, темплейтов и т.п.

R>А вообще конечно это одна из самых важных и уникальных идей и языка С++, да..

R>Скажите, а foreign export ccall в Хаскеле написать уже нет?
R>или там external в O'Caml
Простите, но если вы не понимаете, что интероперабельность делается не только одним extern-вызовом функций, то вы просто дилетант.

И нет. Ни Хаскел, ни OCaml не имеют даже близких возможностей интероперабельности.

C>>Я писал на OCaml'е и немного на Haskell'е, например. Неплохо, но далеко

C>>не самая лучшая вещь с начала времен.
R>А расскажите какая лучшая?
Никакая. Но функциональные языки уж точно на нее не тянут.

R>Кстати еще интересно чем вам так мемори менеджмент в окамле и хаскеле не угодил. Правда.

Не всегда GC (и связаный с ним оверхед) нужен. И кое-где он не нужен совсем.
Sapienti sat!
Re[8]: Goto's are evil?
От: Cyberax Марс  
Дата: 02.12.05 07:01
Оценка:
Pzz wrote:

>> Надо сказать, что ядро к окружению отношение не очень большое имеет (а

>> Unix — это прежде всего окружение). То есть на Linux'е можно запустить и
>> встроеное устройство вообще без файловой системы. Кроме того, критикам
>> Линуса стоит напомнить, что есть куча *BSD-систем, которые так и не
>> набрали популярность (в отличие от Линукса).
> Вообще без файловой системы, это вряд ли.

Сам такое устройство видел. Делается без проблем — все нужное пишется в
виде ядерных модулей и статически линкуется.

> Без файловой системы на "твердом носителе", это возможно.


Можно и на диске — ядро в память загружает lilo, которому FS не нужна.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[13]: Goto's are evil?
От: Cyberax Марс  
Дата: 02.12.05 07:05
Оценка:
Sinclair wrote:

> C>У goto есть минус — очень сложно отслеживать переходы "назад". И

> C>вложенные goto тоже страшновато выглядят.
> Дело не в страшноватости вида. А в том, что очень трудно определить
> зависимости. Совершенно неважно, прыгает goto вперед или назад.
> Проблема в том, что в любую метку ты можешь попасть из неопределенного
> количества мест, и совершенно непонятно, какие ветки кода к этому
> моменту были выполнены, и сколько раз.

Если у кода есть зависимости от того, какие ветки были выполнены — то не
надо использовать goto (или сделать его использование безопасным). Тут
действительно хорошо подходит С-шный паттерн "goto cleanup".

> Конечно, goto — не единственный способ запутать программу. Но если

> ограничиться "безопасным" использованием goto, то оно как раз и
> сведется к while, if, return.

Я бы еще добавил break/continue и имитацию исключений.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[18]: Goto's are evil?
От: Cyberax Марс  
Дата: 02.12.05 07:11
Оценка:
шапокляк wrote:

> C> А сейчас до сих пор в своих языках занимается (в основном)

> идеологией без нововведений. За это Вирта и не любят тут Как я успела
> заметить Вирта тут не любят за другое — он и его слова вносят ненужный
> диссонанс (во какое словечко вспомнила) во всеобщее благоденствие на
> рынке С-шных языков.

Нет, скорее поднимает из могилы давно надоевшие флеймы.

Диссонансом занимается Python/OCaml и другие новые языки.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[19]: Goto's are evil?
От: Cyberax Марс  
Дата: 02.12.05 07:26
Оценка:
reductor wrote:

> ПК>Пожалуй, правильнее говорить об управлении временем жизни объектов,

> с чем C++, действительно, справляется лучше ряда других языков
> благодаря детерминированному разрушению объектов. GC этой задачи не
> решает.
> Я все же не понимаю кое-чего. Для каких задач нужно такое управление?

Например, если нельзя допускать пауз GC и большого оверхеда
конкурентного GC. Или если существуют гораздо более эффективные методы
управления памятью для данной задачи (preallocated пулы, например). Или
если требуется детерминированое уничтожение объекта.

> Но даже если так, почему С++ здесь справляется лучше тех языков, у

> которых нет проблем с алиасингом?

А в С++ нет проблем с алиасингом. Более того, он тоже успешно
используется для некоторых трюков. Вот вам прямо с About Haskell
(http://www.haskell.org/aboutHaskell.html):

It isn't all roses, of course. The C quicksort uses an extremely
ingenious technique, invented by Hoare, whereby it sorts the array /in
place/; that is, without using any extra storage. As a result, it runs
quickly, and in a small amount of memory. In contrast, the Haskell
program allocates quite a lot of extra memory behind the scenes, and
runs rather slower than the C program.

In effect, the C quicksort does some very ingenious storage management,
trading this algorithmic complexity for a reduction in run-time storage
management costs.

In applications where performance is required at any cost, or when the
goal is detailed tuning of a low-level algorithm, an imperative language
like C would probably be a better choice than Haskell, exactly because
it provides more intimate control over the exact way in which the
computation is carried out.


> Окамла, у которого очень прогрессивный копирующий GC при котором куча

> всегда утрамбована и который еще и полностью управляемый?
> Или чем С++ здесь лучше Cyclone c его регионами и прочим?

А говорите "выучить язык за пару дней"...

В С++ продумано взаимодействие аллокаторов, стандартных контейнеров,
алгоритмов и т.п. Например, как мне поместить в контейнер OCaml'а
объект, созданый в блоке shared memory? Причем указатели в этом объекте
представлены в виде смещений относительно начала блока, а null pointer
представлен в виде указателя со смещением -1.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[24]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.12.05 07:37
Оценка:
Здравствуйте, Andir, Вы писали:

Д>>а то, что наука в нашей стране окончательно прогнила и практически ни на что не годится — это и так известный факт


A> Какая чушь! Прогнила не наука, а максимум — система обучения. А Наука не приемлет государственных границ.


Andir, не знаю, за что именно ты мне поставил минус, но против науки, как таковой, я ничего не говорил. Я просто сказал, что не приемлю тех оценок "производительности" или "показанных результатов", которые применялись некоторое время назад -- количество публикаций. Этот критерий еще может как-то показывать достижения математика или физика, но если речь идет о программировании, то почему в расчет не принимаются реализованные в ПО идеи, я не могу понять.

Это как религия и церковь: понятие и институт вокруг него. Так же, есть Наука и есть Ученые с большой буквы. А есть "наука", как институт вокруг Науки. В котором свои правила и порядки, иерархия и система ценностей. И я согласен с Дарнеем, что во многих прикладных областях (о фундаментальных исследованиях не скажу) этот институт прогнил. В часности, в области ИТ.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[24]: Goto's are evil?
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.12.05 08:05
Оценка: :)))
Здравствуйте, eao197, Вы писали:
E>А вот мне интересно, за какие открытия присуждают звания "кандидата технических наук"?
Любое внедрение чего угодно. Даже если ты "изобрел" сортировку пузырьком, для дисера вполне хватит "применение сортировки пузырьком в свинодобывающей промышленности". К списку публикаций добавляешь отзыв, подписанный зам.директора свинодобывающего завода о том, что "метод ... успешно применяется на нашем предприятии вот уже три дня, и все щасливы".
Единственный риск — что неподалеку уже защитили дисер ровно с таким же названием. В остальном ты неуязвим
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[25]: [OFF] Goto's are evil?
От: ArtDenis Россия  
Дата: 02.12.05 08:13
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Любое внедрение чего угодно. Даже если ты "изобрел" сортировку пузырьком, для дисера вполне хватит "применение сортировки пузырьком в свинодобывающей промышленности"...


Это что-то из области "булки на деревьях растут, а Россия-родина слонов"?
... << RSDN@Home 1.1.4 stable rev. 510>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[12]: Goto's are evil?
От: minorlogic Украина  
Дата: 02.12.05 08:26
Оценка:
Здравствуйте, Игoрь, Вы писали:

И>И что ты мне пытаешься доказать? Я разве где-то говорил о том, что я против структурного программирования? Я говорил только о том, что возможны ситуации, когда применение явного goto оправдано. Вообще тема настолько заезжена, что у меня нет особого желания спорить. Если ты считаешь, что метки — это абсолютное зло, то я не смогу тебя переубедить. У Кнута есть статья на эту тему Structured Programming with go to Statements.


Я просто хочу увидеть код где использование goto оправдано.
Я не утверждаю , что это зло абсолютное — но то что зло — однозначно.

Повторюсь еще раз , единственная ситуация где с C/C++ я бы мог стерпеть goto это выход из наспех сделанного вложенного цикла.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Goto's are evil?
От: minorlogic Украина  
Дата: 02.12.05 08:29
Оценка:
Здравствуйте, 0xDEADBEEF, Вы писали:

Откровенно говоря , после взгляда на вход в середину цикла , разбираться что этот код делает — пропадает у меня охота ..
Ищу работу, 3D, SLAM, computer graphics/vision.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.