Сложный язык для сложных срограмм.
От: remark Россия http://www.1024cores.net/
Дата: 27.01.07 22:03
Оценка: 20 (6) +9 -1 :))
Здравствуйте, MasterZiv, Вы писали:

MZ>jazzer пишет:

>> The whole committee expressed a strong desire to deliver the next C++
>> Standard in 2009.

MZ>Зачем догружать и без того уже офигенно сложный язык ?

MZ>Может уже пора делать из него новый ?


Вот здесь Страуструп очень интересно пишет на этот счёт. Дядька хоть уже и старый, но всё ещё умный

Вот пара цитат прямо по теме:

There are more useful systems developed in languages deemed awful than in languages praised for being beautiful – many more. The purpose of a programming language is to help build good systems, where “good” can be defined in many ways. My brief definition is “correct, maintainable, and adequately fast”. Aesthetics matter, but first and foremost a language must be useful; it must allow real-world programmers to express real-world ideas succinctly and affordably. People tend to forget this and argue over programming
style or language features using small contrived examples. A programming language is a small – but often highly visible – piece in a huge puzzle.

The main reason for C++’s success is simply that it meets its limited design aims: it can express a huge range of ideas directly and efficiently. C++ was not designed to do just one thing really well or to prevent people doing things considered “bad.” Instead, I concentrated on generality and performance. In C++, you can write code that is simultaneously elegant and efficient. Naturally, you can also write code that is neither, and many people couldn’t recognize elegance if it walked up and punched them in the nose – but that’s true for every language. C++’s strengths lies in the huge range of what it is pretty good at rather than in what it’s superb at.

...

C++ is designed to allow you to express ideas, but if you don’t have ideas or don’t have any clue about how to express them, C++ doesn’t offer much help. In that, C++ is not that different from other languages, but it is different from languages/systems/tools/frameworks designed to make it easy to express specific things in a specific domain.

...

C++ has indeed become too expert friendly at a time where the degree of effective formal education of the average software developer has declined. However, the solution is not to dumb down the programming languages but to use a variety of programming languages and educate more experts. There has to be languages for those experts to use – and C++ is one of those languages.


Вот, что из он заключает из этого:

We need relatively complex language to deal with absolutely complex problems.



Я с ним согласен. То, что появится какой-то _простой_ язык, на котором можно будет научиться профессионально программировать на двух недельных курсах, и после этого создавать какие-то реальные приложения — это полная утопия и миф, который поддерживают компании, которые хотят впаривать якобы такие языки, и их поддерживают тупые менеждеры, которые верят, что они смогут понанимать дешёвых, неопытных программистов и таким образом достигнут высокой эффективности вложений.

Никого же не удивляет, что очень сложно строить мосты и небоскрёбы, и что этим занимаются только опытные профессионалы. Никого не удивляет, что лекарства создают только профессионалы. Никого не удивляет, что пособие по анатомии для докторов на порядок сложнее и детализированнее любой книги по программированию. Кто готов жить в доме/летать на самолёте/принимать лекарства/..., которые сделал некто, кто прошёл некие двух-недельные курсы по некой новомодной очень-простой-для-дебилов методике.
Вобщем _реальный_ язык программирования всегда будет сложным и создавать системы на нём смогут только профессионалы и тут ничего не поделать.
К сожалению в области создания ПО сейчас сложилась очень нездоровая ситуация, когда многие (причём и люди очень высокого звена) считают, что не надо использовать _сложные_ языки и не надо нанимать опытных профессионалов, всё тоже для них смогут сделать студенты на новом разрекламированном языке.

Напоследок ещё одна цитата — просто очень понравиась:

why do I see character echo delays in Word on my 2GHz, 2Gb computer? I didn’t see that on my editor on a shared 1MHz, 1Mb PDP11 25 years ago





29.01.07 15:52: Ветка выделена из темы [ANN] State of C++ Evolution
Автор: jazzer
Дата: 23.01.07
— WolfHound
29.01.07 15:57: Перенесено модератором из 'C/C++' — WolfHound

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 17:03
Оценка: 99 (8) +9 :)
Здравствуйте, remark, Вы писали:

R>

R>We need relatively complex language to deal with absolutely complex problems.

Во только С++ черизвычайно сложный и позволяет решать относительно сложные задачи...
А для абсолютно сложных задач нужно что-то попроще и помощьнее.

R>Вобщем _реальный_ язык программирования всегда будет сложным и создавать системы на нём смогут только профессионалы и тут ничего не поделать.

R>К сожалению в области создания ПО сейчас сложилась очень нездоровая ситуация, когда многие (причём и люди очень высокого звена) считают, что не надо использовать _сложные_ языки и не надо нанимать опытных профессионалов, всё тоже для них смогут сделать студенты на новом разрекламированном языке.
Твое заявление из тойже серии что говорить: Зачем нужны все эти сверхпрочные материалы? Для того чтобы любой дворник мог построить мост через ручей? Так профессионал может построить его из обычнах досок!
Нет! Они нужны для того чтобы профессионалы могли строить многокилометровые мосты через проливы в сейсмоопасных районах.

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

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

R>Напоследок ещё одна цитата — просто очень понравиась:

R>

R>why do I see character echo delays in Word on my 2GHz, 2Gb computer? I didn’t see that on my editor on a shared 1MHz, 1Mb PDP11 25 years ago


Угу вот только word написан на С/С++.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 17:28
Оценка: -2 :)
Здравствуйте, WolfHound, Вы писали:

[]

ну как же тут без вас? Без вас уже ничего теперь не обходится.

R>>Напоследок ещё одна цитата — просто очень понравиась:

R>>

R>>why do I see character echo delays in Word on my 2GHz, 2Gb computer? I didn’t see that on my editor on a shared 1MHz, 1Mb PDP11 25 years ago


WH>Угу вот только word написан на С/С++.

а тот, на который он не жаловался 25 лет назад видимо был написан на c#?

При всем уважении к c# он не является тем самым "мощным" языком.

Чем больше пишу на с++, тем больше понимаю, что в нем ооочень много дыр и он ооочень сложен. Чем больше пишу на C#, тем больше понимаю, что что-то в нем не так
Re[3]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 17:44
Оценка: +1
Здравствуйте, Константин Л., Вы писали:

КЛ>а тот, на который он не жаловался 25 лет назад видимо был написан на c#?

КЛ>При всем уважении к c# он не является тем самым "мощным" языком.
А где я сказал C#? Может будешь читать то что написано, а не то что тебе хочется читать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Сложный язык для сложных срограмм.
От: remark Россия http://www.1024cores.net/
Дата: 28.01.07 17:46
Оценка: +2 -2
Здравствуйте, WolfHound, Вы писали:

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


R>>

R>>We need relatively complex language to deal with absolutely complex problems.

WH>Во только С++ черизвычайно сложный и позволяет решать относительно сложные задачи...

Какие интересно задачи не позволяет решать С++? Имхо, если С++ сегодня не позволяет, то ни один язык сегодня не позволяет её решить.

WH>А для абсолютно сложных задач нужно что-то попроще и помощьнее.


Под complex он подразумевает не сложный (как алгоритм), а скорее комплексный. Т.е. некая real-world задача с неким абсолютно непредсказуемым набором нефункциональных требований, и которые могут непредсказыемым образом эволюционировать.

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

Часто такими требованиями бывает портируемость не некую платформу, производительность, потребление памяти, доступ к аппаратному обеспечению, полный доступ к возможностям ос и т.д.

Как бы это не было печально (или кому наоборот хорошо) и сегодня из-за семантической пропасти некое множество систем, написанных на языках _попроще_, или терпит крах или переписывается на С/С++...





WH>Простые языки вернее языки которыми просто пользоваться нужны не для того чтобы могли писать домохозяйки. Они никогда не смогут писать и ни один разумный человек с этим спорить не станет.

WH>Они нужны для того чтобы повысить производительность профессиональных программистов. Они нужны для того чтобы профессионал мог решать задачу, а не обходить грабли языка. Они нужны чтобы можно было создовать то что раньше сделать было нереально (слишком сложно в том числе из-за граблей в языке).

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


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


R>>Напоследок ещё одна цитата — просто очень понравиась:

R>>

R>>why do I see character echo delays in Word on my 2GHz, 2Gb computer? I didn’t see that on my editor on a shared 1MHz, 1Mb PDP11 25 years ago


WH>Угу вот только word написан на С/С++.

Это он о другом там говорит — об сегодняшнем образовании и об сегодняшнем подходе. И вообще:

In C++, you can write code that is simultaneously elegant and efficient. Naturally, you can also write code that is neither...




1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[4]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 17:46
Оценка: -5
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


КЛ>>а тот, на который он не жаловался 25 лет назад видимо был написан на c#?

КЛ>>При всем уважении к c# он не является тем самым "мощным" языком.
WH>А где я сказал C#? Может будешь читать то что написано, а не то что тебе хочется читать?

а то я вас не знаю
Re[5]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 18:31
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>а то я вас не знаю

Совершенно не знаешь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 18:31
Оценка: :))) :)))
Здравствуйте, remark, Вы писали:

WH>>Во только С++ черизвычайно сложный и позволяет решать относительно сложные задачи...

R>Какие интересно задачи не позволяет решать С++? Имхо, если С++ сегодня не позволяет, то ни один язык сегодня не позволяет её решить.
Например компилятор nemerle. Написать его на С++ настолько сложная задача что справится с ней не сможет даже мелкософт с его гигабаксами. Меж тем на nemerle его ниписали два студента.
И больше всего у них проблем возникает с ошибками в CLR который сам понимаешь кем и начем написан. А ведь мелкософт может позволить себе нанять элиту.
Что уж говорить о конторах помельче...

WH>>А для абсолютно сложных задач нужно что-то попроще и помощьнее.

R>Под complex он подразумевает не сложный (как алгоритм), а скорее комплексный. Т.е. некая real-world задача с неким абсолютно непредсказуемым набором нефункциональных требований, и которые могут непредсказыемым образом эволюционировать.
И как тут поможет С++?

R>Как бы это не было печально (или кому наоборот хорошо) и сегодня из-за семантической пропасти некое множество систем, написанных на языках _попроще_, или терпит крах или переписывается на С/С++...

Примеры в студию.

R>Во-первых, язык с++ не такой уж и сложный для пофессионалов (ты согласился, что домохозяйкам не надо давать программировать).

Я сейчас работаю в одной очень крупной и богатой конторе. Основная разработка идет на С++.
Персонал набирают очень придирчиво.
Так вот даже тут есть всего человек 10 (не больше) у которых с С++ почти нет проблем.
R>Во-вторых, не так уж там много граблей.
Это ты мне не расказывай ладно?
R>В-третьих, язык С++ очень мощный по выразительной мощности и по возможности абстрагироваться, и пакетировать функциональность (создавать повторноиспользуемые компоненты). По крайней мере из императивных языков.
Раскажи это тем кто не пишет сложные кроссплатформенные системы на С++ ладно?
Что касается выразительности то покажи мне сериализацию на С++, а потом я тебе покажу сериализацию на nemerle.
Да вобще просто посмотри http://nemerle.org/svn/nemerle/trunk/macros/ и подумай как это все будет выглядеть на С++.
И это при том что nemerle не идеал и можно сделать лучше.

R>Это он о другом там говорит — об сегодняшнем образовании и об сегодняшнем подходе. И вообще:

R>

R>In C++, you can write code that is simultaneously elegant and efficient. Naturally, you can also write code that is neither...


Это относится почти ко всем языкам.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 18:39
Оценка: 3 (1) :))
Здравствуйте, remark, Вы писали:

R>В-третьих, язык С++ очень мощный по выразительной мощности и по возможности абстрагироваться, и пакетировать функциональность (создавать повторноиспользуемые компоненты). По крайней мере из императивных языков.

Кстати насчет выразительности С++: Чем заменить if () else if() else if() else if() else...
Автор:
Дата: 28.01.07

А как на С++ написать что-то типа такого
            def parse(messages, states, decls : list[Token])
            {
                match (decls)
                {
                | Identifier(["message"]) :: (Identifier as name) :: Round(parms) :: Semicolon :: tokens =>
                    parse(parseMessage(name, parms) :: messages, states, tokens);

                | Identifier(["state"]) :: (Identifier as name) :: Brace(decls) :: tokens =>
                    parse(messages, parseState(name, decls) :: states, tokens);
            
                | token :: _ => 
                    throw CompileError(token);
            
                | [] => (messages, states)
                }
            }

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 18:55
Оценка: -3 :)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


КЛ>>а то я вас не знаю

WH>Совершенно не знаешь.

разве ты не из тех любителей почморить с++ при каждом удобном случае? Мы к вам в .NET векту не лезем и не говорим, что там на чем было написано.
Re[4]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 19:01
Оценка: +6 -1
Здравствуйте, WolfHound, Вы писали:

а говоришь я вас не знаю

только вот теперь c# уже не в моде. В моде nemerle

PS: Ну зачем ты сюда приперся (не обижайся только)? Тут нам очередной холивар не нужен. Мы тут новые фичи с++ обсуждать пытаемся.
Re[4]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 19:03
Оценка: -2 :)
Здравствуйте, WolfHound, Вы писали:

хм...Издеваешься? Нормальный человек бы описание хоть привел, что тут должно делаться. И то, что ты его не привел — твоя проблема. И не удивляйся, что нико не захочет тебе на это отвечать.
Re[7]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 19:04
Оценка: +1 :)
Здравствуйте, Константин Л., Вы писали:

КЛ>разве ты не из тех любителей почморить с++ при каждом удобном случае?

Нет.
В данном случае я увидел ложное утверждение что для сложных задач нужен сложный язык. И высказался именно по поводу этого утверждения. С++ тут попался лишь как пример черезмерно усложненного языка при этом не обладающий большой выразительностью.

КЛ>Мы к вам в .NET векту не лезем и не говорим, что там на чем было написано.

Кому это к нам? У меня нет барикадного синдрома в отличии от...

Чтоб ты знал: прямо сейчас я пишу кластерный софт на С++ под линукс.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 19:24
Оценка: -1
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


КЛ>>разве ты не из тех любителей почморить с++ при каждом удобном случае?

WH>Нет.
WH>В данном случае я увидел ложное утверждение что для сложных задач нужен сложный язык. И высказался именно по поводу этого утверждения. С++ тут попался лишь как пример черезмерно усложненного языка при этом не обладающий большой выразительностью.

ну в другой ветке этого же топика ты все-таки перешел на личности (это я про Nemerle). Зачем это тут?
btw, c# я бы тоже не назвал простым языком. пусть даже он проще с++. и с выразительностью у него тоже не лучше, особенно c# 1.0

[]

да я в курсе про твой с++ background
Re[9]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 19:37
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>ну в другой ветке этого же топика ты все-таки перешел на личности (это я про Nemerle).

Пример языка попроще и помощьнее. Вренее сильно проще и сильно мощьнее.
Но и немерле не идеал. Можно еще проще и мощьнее.
Лиспоманам: Нет это не лисп.
КЛ>Зачем это тут?
За тем что я пытаюсь обсудить тезис о том что для сложных задач нужны сложные языки, а ты зачемто все пытаешься свести к тупому холивару

КЛ>btw, c# я бы тоже не назвал простым языком. пусть даже он проще с++. и с выразительностью у него тоже не лучше, особенно c# 1.0

Еще раз спрашиваю: Где я говорил про C#?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 20:02
Оценка: -2 :))
Здравствуйте, WolfHound, Вы писали:

[]

WH>За тем что я пытаюсь обсудить тезис о том что для сложных задач нужны сложные языки, а ты зачемто все пытаешься свести к тупому холивару


ок. Однако корреляция м/у сложность ю мощность все же существует. Имхо.
Мне холивар не нужен. Но больше всего мне тут не нужно обсуждение с++ как языка с кучей костылей. Все мы это уже слышали.
и все-таки он должен быть сложным. Может быть не таким как с++, но все же.


КЛ>>btw, c# я бы тоже не назвал простым языком. пусть даже он проще с++. и с выразительностью у него тоже не лучше, особенно c# 1.0

WH>Еще раз спрашиваю: Где я говорил про C#?

c#, nemerle, какая разница
Re[11]: Сложный язык для сложных срограмм.
От: WolfHound  
Дата: 28.01.07 20:19
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>ок. Однако корреляция м/у сложность ю мощность все же существует. Имхо.

Очень слабая.
КЛ>Мне холивар не нужен. Но больше всего мне тут не нужно обсуждение с++ как языка с кучей костылей. Все мы это уже слышали.
А зачем тогда ты сводишь разговор к этому?
КЛ>и все-таки он должен быть сложным. Может быть не таким как с++, но все же.
Не должен.

КЛ>c#, nemerle, какая разница

Это пять! Дальше можно не продолжать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: модальность
От: Erop Россия  
Дата: 28.01.07 20:22
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH> Это пять! Дальше можно не продолжать.


Вот именно! И не только можно, но и нужно!!!
Ну правда, оставь тему для обсуждения фич C++, а не того, что его надо вообще нафиг порушить.
Я не спорю, что надо, но фичи как-то конструктиынее
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: Сложный язык для сложных срограмм.
От: Константин Л. Франция  
Дата: 28.01.07 20:52
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Константин Л., Вы писали:


КЛ>>ок. Однако корреляция м/у сложность ю мощность все же существует. Имхо.

WH>Очень слабая.
КЛ>>Мне холивар не нужен. Но больше всего мне тут не нужно обсуждение с++ как языка с кучей костылей. Все мы это уже слышали.
WH>А зачем тогда ты сводишь разговор к этому?

я свожу? Где?

КЛ>>и все-таки он должен быть сложным. Может быть не таким как с++, но все же.

WH>Не должен.

КЛ>>c#, nemerle, какая разница

WH> Это пять! Дальше можно не продолжать.

да не буду я обсуждать разницу между ними
Re[4]: Сложный язык для сложных срограмм.
От: remark Россия http://www.1024cores.net/
Дата: 28.01.07 21:02
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>А как на С++ написать что-то типа такого...


От туда же:

Q: How importance is elegance in a computer language?

Elegance is essential, but how do you measure “elegance”? The lowest number of characters to express the solution to the “towers of Hanoi” problem? My view is that we should look for elegance in the applications built, the code written, rather than in the languages themselves. It would be a stretch to call a carpenter’s complicated set of tools – many quite dangerous – elegant. The true worth of a craftsman’s tools is only appreciated by craftsmen.



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.