Re[16]: Goto's are evil?
От: Глеб Алексеев  
Дата: 30.11.05 08:41
Оценка:
Здравствуйте, GlebZ, Вы писали:

R>>Во-первых, раз и навсегда — идея противопостовления структурного и функционального программирования — это крайне дикая идея. Функциональные языки, надо полагать, не вписываются в языки "структурные"?

GZ> представь себе если в SML или лиспе уберут списки и разрешат использовать состояние внутри функции.
В SML можно использовать состояние внутри функции
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[3]: Goto's are evil?
От: Privalov  
Дата: 30.11.05 08:52
Оценка: 1 (1) +1
Здравствуйте, AVC, Вы писали:

AVC>Конечно, "оберонщики" на rsdn.ru во многом сами виноваты. Нас здесь всего пара человек (Сергей да я), а такой стойкий негативный эффект.

AVC>Но некоторая "антипатия к Вирту" существует давно, и с нашими проделками на rsdn.ru не связана.

Cyberax здесь пишет вот что:

По-моему, Вирт все же больше относиться к академикам (где его достижения
действительно весьма большие), а не к практикам.

Паскаль был абсолютным хитом в свое время — хороший, продуманый, простой
язык. Он оказал влияние на кучу последующих языков, и до сих пор
используется для обучения. Одно это тянет на премию Тьюринга


Добавлю, что, возможно, именно Паскаль помог уйти от разработки монстров типа PL/1. Иначе, был бы сейчас какой-нибудь PL/3, объединяющий все самое худшее из всех течений в программировании.

AVC>Возможно, здесь какая-то (бессознательная) неприязнь к "конкуренту", или что-нибудь другое.


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

AVC>Главное, присоединяюсь к призыву критиковать не личности, а поступки и высказывания.


Полностью согласен .
Re[10]: Goto's are evil?
От: dshe  
Дата: 30.11.05 09:02
Оценка:
Здравствуйте, Игoрь, Вы писали:

И>Здравствуйте, minorlogic, Вы писали:



M>>Так вот в том то и дело что метку можно назвать хорошо а МОЖНО ПЛОХО , а return не допускает вольной интерпретации, логика его работы прозрачна.

И>Ну и что из этого следует? Я же выше сказал, что и функцию МОЖНО ПЛОХО назвать, но главное что можно и хорошо.

Метки для goto гораздо сложнее назвать хорошо. Наиболее часто используемые имена выглядят так: end_if, end_loop, exit, start_loop, else_branch. А с учетом того, что метки в определенной области видимости должны быть уникальны, приходится извращаться с добавлением суффиксов. Это также создает проблемы при переносе какого-то участка кода в другое место: часто приходится переименовывать метки, из-за чего могут вноситься ошибки. Например,

while() {
    if() goto exit1;
    while() {
        if() goto exit1; // или exit2 ?
    }
    exit2:
}
exit1:



во-втором goto exit1; может действительно подразумевался выход из двух вложенных циклов, а может кто-то просто забыл (при переносе кода) exit1 заменить на exit2.
--
Дмитро
Re[4]: Goto's are evil?
От: Дарней Россия  
Дата: 30.11.05 09:23
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Вирт учит делать то, что можно так, как нужно.


если оберон — это "так, как нужно"?
то ну его нафиг, такое "как нужно"!
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[10]: Goto's are evil?
От: vdimas Россия  
Дата: 30.11.05 09:58
Оценка:
Здравствуйте, eao197, Вы писали:

R>>В моей обычной практике я использую около 30 языков программирования. Среди них хватает и императивных и функциональных и логических и стековых и гибридов всего этого смешанных вместе.


E>Можно ли развить эту тему по-подробнее?

E>Это действительно интересно, т.к. недавно я утверждал, что сложно одновременно использовать в проекте 3-5 языков (Re[2]: Предагаю мир!
Автор: eao197
Дата: 20.10.05
).

E>Но здесь цифра просто на порядок большая . Можно ли подробнее, что это за языки, для каких целей используются, как применяются, какие замечены достоинства/недостатки использования такого количества языков, используется ли это все в рамках одного проекта, какова численность команды и пр.?

E>Я думаю, что это будет интересно не только мне.


30 одновременно используемых в проекте — это явное преувеличение, ИМХО. Наверно имелось ввиду, что в разное время использует много языков, всего до 30 различных.

А вообще, у меня тоже практически каждый проект "разношерстный". Обычно 2 "главных" языка, и затем практически в любой проект автоматически добавляются SQL, HTML, JavaScript/DHTML, VBA, XML, Perl.

Иногда прикручиваются еще всякие скриптовые или специфические, типа Пролог, MatLab, Forth и т.д.


------
С подачи Редуктора заинтересовался Хаскелем, найти бы время на эксперименты с ним...
Re[11]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.11.05 10:06
Оценка:
Здравствуйте, vdimas, Вы писали:

V>А вообще, у меня тоже практически каждый проект "разношерстный". Обычно 2 "главных" языка, и затем практически в любой проект автоматически добавляются SQL, HTML, JavaScript/DHTML, VBA, XML, Perl.


Если считать SQL, XML и HTML за языки программирования, то тогда счет может идти на сотни

V>Иногда прикручиваются еще всякие скриптовые или специфические, типа Пролог, MatLab, Forth и т.д.


А зачем? Можно ли примеры?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Goto's are evil?
От: Cyberax Марс  
Дата: 30.11.05 10:18
Оценка: +2
reductor wrote:

> C>Хороший программист о них, конечно, должен знать, но это скорее просто

> C>background knowledge (как мат.анализ или алгебра).
> Да ладно. Конечно не должен!
> Хороший программист — это когда в слюнявчике, утка, детское питание по
> катетеру, мышь без колеса и клавиатура с одной кнопкой — для вызова
> сиделки с проджект менеджером.

А если серьезно, где теория необходима прикладному программисту?
Например, я не помню, чтобы мне где-то понадобилось использовать
алгоритмы быстрой факторизации чисел или доказывать правильность алгоритма.

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

Бывают задачи (типа цифровой обработки сигналов, например), где без
теории — никуда. Но это уже исключения, подтверждающие правило.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[5]: Goto's are evil?
От: Privalov  
Дата: 30.11.05 10:23
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>если оберон — это "так, как нужно"?

Д>то ну его нафиг, такое "как нужно"!

Где в моем посте прозвучало название "Оберон"?
Re[6]: Goto's are evil?
От: Дарней Россия  
Дата: 30.11.05 10:31
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Где в моем посте прозвучало название "Оберон"?


Я просто предположил.
Вирт учит, как нужно делать + Вирт призывает всех программировать на обероне -> программировать "нужно" на обероне
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[8]: Goto's are evil?
От: Шахтер Интернет  
Дата: 30.11.05 10:32
Оценка: +1 -2 :)
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, reductor, Вы писали:


R>>А Вирт? Язык Оберон. Даже не смешно.

R>>То есть реально я вообще затруднюсь сказать что сделал Вирт в CS после своего участия в группе алгола.
R>>40 лет одна и та же песня.

E>Блин, ну как же много желающих кинуть в Вирта камень! Извините за ненормативную лексику, но это просто офигеть можно (с заменой офигеть на соответствующий нецензурный термин по вкусу).


E>И главное кто?


E>Кто такой reductor? Кто такой AVC? Кто такой eao197?


E>Кто про нас знает за пределами RSDN? А ведь про Вирта знают...


Герострат тоже известен.

E>Если кому-то кажется, что Вирт оставил малый след в программировании, то это его личное дело. Но вот смеятся над ним пусть будут те, кто создал что-нибудь аналогичное Паскалю, с выросшими из него Modula-ми, Oberon-ми, и выросшими из всего этого Object/Component Pascal-ями, Delphi-ями и Ada-ми.


Если бы я был создателем Паскаля, я бы не стал этим гордится.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[7]: Goto's are evil?
От: Privalov  
Дата: 30.11.05 10:37
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Я просто предположил.


Да ладно, бывает. Однако в этом топике идет, в общем-то, нормальная дискуссия. Не хотелось бы превращать ее в очередную священную войну, плавно переходящую в виртуальный мордобой.
Re[8]: Goto's are evil?
От: Дарней Россия  
Дата: 30.11.05 10:38
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Да ладно, бывает. Однако в этом топике идет, в общем-то, нормальная дискуссия. Не хотелось бы превращать ее в очередную священную войну, плавно переходящую в виртуальный мордобой.


ок, давайте не будем
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.11.05 10:39
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Если бы я был создателем Паскаля, я бы не стал этим гордится.


Боюсь, что сказать это с полной определенностью ты мог бы, если бы был создателем Паскаля.
А так это только слова.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Goto's are evil?
От: reductor  
Дата: 30.11.05 11:42
Оценка: 12 (1)
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, reductor, Вы писали:


R>>В моей обычной практике я использую около 30 языков программирования. Среди них хватает и императивных и функциональных и логических и стековых и гибридов всего этого смешанных вместе.


E>Можно ли развить эту тему по-подробнее?


Это был ответ на предположение, что я не знаю "императивных" языков.
Я буквально ответил, что знаю и много. Речь не про "в одном проекте"

E>Это действительно интересно, т.к. недавно я утверждал, что сложно одновременно использовать в проекте 3-5 языков (Re[2]: Предагаю мир!
Автор: eao197
Дата: 20.10.05
).


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

E>Но здесь цифра просто на порядок большая . Можно ли подробнее, что это за языки, для каких целей используются, как применяются, какие замечены достоинства/недостатки использования такого количества языков, используется ли это все в рамках одного проекта, какова численность команды и пр.?


Ничего, если я не буду перечислять все 30, что могут быть?
Одновременно в одном коммерческом проекте могут использоваться 3-5 полноценных, тьюринг-полных языков, особенно в клиент-серверном случае.
Как пример — Java/Prolog/Scheme/Python (Все могут быть и в пределах одной java-машины) на сервере и Smalltalk, Javascript, Tcl на клиенте. + еще VB на клиенте внутри Ms Office
Это конечно не считая кучи domain specific языков для конфигурации, интеропа, DB, GUI и тп

Вообще в чем проблема, квалифицированному программисту выучить любой язык, если очень нужно — полдня максимум

Команды 2-5 человек

Еще замечу, что количество человек в команде не такую уж и большую роль играет. 2 опытных человека используя правильные инструменты сделают работу быстрее, чем 20 не таких опытных с неподходящими инструментами.
Re[11]: Goto's are evil?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.11.05 11:55
Оценка:
Здравствуйте, reductor, Вы писали:

R>Как пример — Java/Prolog/Scheme/Python (Все могут быть и в пределах одной java-машины) на сервере и Smalltalk, Javascript, Tcl на клиенте. + еще VB на клиенте внутри Ms Office


В чем преимущество связки Java+Prolog?
В каких задачах это может потребоваться?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Goto's are evil?
От: GlebZ Россия  
Дата: 30.11.05 12:00
Оценка: 1 (1)
Здравствуйте, Дарней, Вы писали:

Д>насколько я помню, EBNF не добавляет к возможностям BNF ничего нового, кроме небольшого количества синтаксического сахарка

Д>в общем, не то это достижение, которым стоит гордиться
Во первых я хотел показать роль. Я не знаю насколько сам Вирт гордится таким достижением, но то что это сделал он — это факт. Я тоже не стану говорить насколько это было важно. Для меня важнее было, что оно есть. Во-вторых, Вирт с его страстью к упрощению здесь сыграл положительную роль. И я сомневаюсь что кто-то меня опровергнет.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: Goto's are evil?
От: GlebZ Россия  
Дата: 30.11.05 12:00
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

GZ>> представь себе если в SML или лиспе уберут списки и разрешат использовать состояние внутри функции.

ГА>В SML можно использовать состояние внутри функции
Конкретнее.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Goto's are evil?
От: Глеб Алексеев  
Дата: 30.11.05 12:20
Оценка: 27 (1)
Здравствуйте, GlebZ, Вы писали:


ГА>>В SML можно использовать состояние внутри функции

GZ>Конкретнее.
В SML и (особенно) в O'Caml есть императивные конструкции (в OCaml есть даже for- и while- циклы).
Вот пример как не надо, но можно делать:
fun imperative fact (n:int) =
let
    val result = ref 1
    val i = ref 0
    fun loop () =
        if !i = n then
            ()
        else
            (i := !i + 1;
            result := !result * !i;
            loop ())
    in
        loop (); !result
    end

Конечно, все это выглядит достаточно некрасиво и неудобно, чтобы в таком духе писать программы полностью, но в низкоуровневом коде встречается (в реализации массивов, хэш-таблиц, потоков I/O).

Весь ввод/вывод в ML является императивным. В стандарте языка есть библиотека функционального ввода-вывода, но реализации ее я не видел (ни в Moscow ML, ни в SML/NJ).

Кроме того, в базовых библиотеках как SML, так и OCaml есть массивы и хэш-таблицы — mutable структуры данных. Ну и т.д., reference cells — это и есть, собственно, "состояние внутри функции".

Что характерно, при этом клиентский код, который пользуется потоками, массивами и т.д., становится императивным без явного использования ref cells и оператора :=. Поэтому с одной стороны, языки семейства ML более легки в освоении для программистов-императивщиков и считаются более практичными, т.к. ввод-вывод нужен везде, и интерактивность, из которой следует глобальное изменяемое состояние, нужна очень часто; с другой стороны, нужна дисциплина, чтобы не перечеркнуть разом все преимущества ФП (в Хаскеле IO живет в гетто, выйти из которого не позволяет система типов).
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[3]: Goto's are evil?
От: GlebZ Россия  
Дата: 30.11.05 13:32
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>на самом деле, Вирт сам вызывает антипатию к себе своими резкими, необоснованными и порой просто невежественными высказываниями

Д>в частности, что
Д>1. Ява — это Оберон, испорченный сишным синтаксисом
Имеет право. Он Оберон-то лучше знает.
Д>2. Функциональные языки никому не нужны, и вообще, они — просто подмножество императивных языков
Где он такое говорил? Ссылку. Я слышал от него другие слова.
Д>3. Все современные языки ни на что не годятся, и только Оберон рулит неимоверно.
Это я тоже не слышал в его исполнении.
Д>Потому что его синтаксис очень простой, и это одним махом решает все существующие проблемы программирования.
Почти так была информация. Только откуда взялось все существующие проблемы? Ты сам своими словами пытаешься сделать из него идола. Я сомневаюсь что он такого мнения о себе. Он достаточно интересный старикашка с весьма интересными мнениями, но бреда от него я не заметил.
Д>4. Оберон никто не использует, потому что ему нигде не обучают. И вообще, все вокруг сговорились, чтобы вытеснить Оберон с рынка.
Д>и так далее, и тому подобное
1. Вообще-то Оберон кое-где изучают.
2. Лично я ему такое высказывание прощу(хотя дословно оно было другое). Обидно человеку. Но вот невежественными их назвать не могу.

GZ>>Поэтому предложил бы объявить людей, которые являются Нобелевскими лауреатами и лауреатами премии Тьюринга священными коровами. И баннить наезды на них по полной так же как и наезды на личности на rsdn. То есть добавить правило что личности из списка Премии Тьюринга священны, и личные нападки на этих людей есть нападки на все IT сообщество. Можно наезжать на поступки, нельзя наезжать на личность.

Д>Может быть, все-таки не станем устраивать идолопоклонничество?
Не идолопоклончество. А уважение. Это разные вещи.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Goto's are evil?
От: Privalov  
Дата: 30.11.05 13:46
Оценка: +1
Здравствуйте, Дарней, Вы писали:

[...]

Вот это и мне непонятно. С одной стороны, разбирая ту или иную задачу, Вирт прежде всего думает о правильной организации данных, т. е. такой, чтобы их было как можно проще обрабатывать. Т. е. данные первичны, программный код — вторичен. (См. например, "Алгоритмы + структуры данных"). И тут же требование писать служебные слова в Обероне большими буквами. По этому поводу я высказался как-то здесь
Автор: Privalov
Дата: 09.08.05
. Явное противоречие.

Д>Может быть, все-таки не станем устраивать идолопоклонничество?


Можно обобщить изречение, услышанное мною на еще на 1-м курсе: "Не сотвори себе кумира из начальника. Знай, что ты и сам не дурак". Однако, я против личных нападок.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.