Потерялся, ищу совета
От: Niovol  
Дата: 02.02.08 12:59
Оценка:
Несколько лет программировал на С++. Устал от его корявости. Искал другой язык, более выразительный. Сначала наткнулся на D. Думал — все, нашел, что искал. Но мне не понравились 2 вещи: язык постоянно меняется, стабильности никакой. Ну и нету IDE нормального. Решил, что так дело не пойдет. Потом посмотрел на RSDN, тут расхваливают nemerle. Почитал, попытался вникнуть в примеры. Довольно приличный язык. И как раз узнаю, что разработчики отказались от языка. Никто теперь не продвигает его, он не достиг еще 1 версии, хоть как я понял, язык сформировался, а компилятор неоптимизированный. Плюс к тому интеграции с VS2008 не будет.
Пишу в принципе небольшие программки, в основном для себя, самое большое — несколько тысяч строк. Но это на С++, на тех же D или nemerle было бы явно меньше.
Вот хотел спросить совета, лучше пытаться переходить на какой-нибудь другой язык или оставаться программировать на с++?
Re: Потерялся, ищу совета
От: Красин Россия  
Дата: 02.02.08 13:13
Оценка: +1
Здравствуйте, Niovol, Вы писали:

N>Несколько лет программировал на С++. Устал от его корявости. Искал другой язык, более выразительный.


На Ruby смотрел? Язык очень красивый, выразительный. Активно развивается Rubinius — быстрая виртуальная машина для Ruby. Есть достаточно большое и, главное, очень внятное сообщество разработчиков. Язык достаточно зрелый, даже в России уже есть команды, которые занимаются коммерческой разработкой на Ruby.

В общем, посмотреть стоит.
Re: Потерялся, ищу совета
От: GlebZ Россия  
Дата: 02.02.08 14:02
Оценка:
Здравствуйте, Niovol, Вы писали:

Здря Nemerle хоронишь. Там уже есть группа энтузиастов, посему он будет жить независимо от двух авторов.
Что касается языков, то смотри для чего их. Для того чтобы просто зарабатывать, смотри mainstream (Java С# Python/Ruby). Если для того чтобы самому развиваться, то прежде всего смотри парадигмы. Функиональные (Lisp, Ocaml, Haskell). Логические — Prolog. Интересны старые языки — Refal, Forth. А после этого ты сможешь спокойно работать не только на любом языке, но и введешь в свой обиход новые приемы программирования.
Re: Потерялся, ищу совета
От: Mikhail Polykovsky Россия http://glader.ru
Дата: 02.02.08 14:21
Оценка: 1 (1) +7 -1
Здравствуйте, Niovol, Вы писали:

N>Несколько лет программировал на С++. Устал от его корявости.


Рекомендую Питон. Очень красивый и аккуратный язык.
Re: Потерялся, ищу совета
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.02.08 18:57
Оценка: 5 (3)
Здравствуйте, Niovol, Вы писали:

N>Вот хотел спросить совета, лучше пытаться переходить на какой-нибудь другой язык или оставаться программировать на с++?


Можете взглянуть в сторону Scala (http://www.scala-lang.org/). В некотором смысле, это язык одного поколения с Nemerle и D, но ориентированный на JVM. Вот некоторые факты о нем, которые помогут сделать выбор:

Язык активно развивается, им занимается не пара энтузиастов, а институт EPFL. У него большое англоязычное community, почти каждый день в новостной группе по несколько сообщений. Русскоязычного community, по моим наблюдениям, почти нет.
Компилятор Scala self-hosting, имеет открытые исходники и покрыт тестами (это значит, что теоретически, компилятор всегда можно докрутить до своих нужд, если стандартных возможностей не хватает, а авторы не спешат из добавлять). Развитие языка ориентировано на добавление большого количества новых фич. Из-за этого страдает скорость компиляции, оптимизация (и скорость исполнения скомпилированного кода), простота и стабильность. Я обычно смотрю, что появилось в новом релизе, и за полчаса экспериментов мне удается в каждом релизе и подвесить компилятор, и найти креши. Бывают и дыры в типобезопасности.
У Scala есть формальная спецификация (в отличие от, например, Nemerle), описывающее большинство аспектов языка. Она уступает по полноте спецификации C# и чересчур переусложнена (возможно, это дань сложности самого языка).
У Scala очень сложная, гибкая (и красивая) система типов. Есть множественное наследование на основе trait'ов. Scala поощряет писать тела методов в функциональном стиле. Авторы принципиально не включают в язык операторы безусловного перехода (goto, break, continue). Есть вывод типов, хотя он заметно слабее, чем, например, в Nemerle. Он позволяет произвольную вложенность конструкций (например, типы могут определяться внутри методов), при этом вложенные конструкции образуют замыкания, захватывая переменные из внешней области. Scala (как Nemerle и D) имеет C-подобный синтаксис, и позволяет писать в очень лаконичном стиле.
К сожалению, пока нет возможностей метапрограммирования, но постоянно идет разговор о том, что их собираются добавить.

Вот так, выбирайте.
Re: Потерялся, ищу совета
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 03.02.08 12:54
Оценка:
Здравствуйте, Niovol, Вы писали:

N> Плюс к тому интеграции с VS2008 не будет.


Как это не будет? Уже есть и работает Вот только инсталлятора нет. Ну да это дело небольшого количества времени.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
--
Re: Потерялся, ищу совета
От: Niovol  
Дата: 03.02.08 13:00
Оценка: 4 (1) :))
Почитал про парадокс Блаба. Интересно мнение обитателей форума на то, какие языки являются наиболее мощными. Прошу всех кому не лень написать в порядке убывания мощности несколько языков, и почему они занимают в вашем списке такое место.
Re[2]: Потерялся, ищу совета
От: FR  
Дата: 03.02.08 13:28
Оценка: +2 :))) :))
Здравствуйте, Niovol, Вы писали:

N>Почитал про парадокс Блаба. Интересно мнение обитателей форума на то, какие языки являются наиболее мощными. Прошу всех кому не лень написать в порядке убывания мощности несколько языков, и почему они занимают в вашем списке такое место.


Занял место поближе в ожидании большого флейма
Re[2]: Потерялся, ищу совета
От: nikov США http://www.linkedin.com/in/nikov
Дата: 03.02.08 13:50
Оценка: +1
Здравствуйте, Niovol, Вы писали:

N>Почитал про парадокс Блаба. Интересно мнение обитателей форума на то, какие языки являются наиболее мощными. Прошу всех кому не лень написать в порядке убывания мощности несколько языков, и почему они занимают в вашем списке такое место.


ИМХО, языки некорректно сравнивать по одному параметру — некой абстрактной мощности. Я вот делал попытку
Автор: nikov
Дата: 06.11.07
провести сравнение по нескольким параметрами, но и то такой подход вызвал у людей недовольство (в чем-то оправданное), потому что к одним языкам применимы одни параметры, а к другим — другие.
Re[3]: Потерялся, ищу совета
От: Дм.Григорьев  
Дата: 03.02.08 14:48
Оценка: :))) :))
Здравствуйте, FR, Вы писали:

FR>Занял место поближе в ожидании большого флейма


А что, разве тут народ ещё не охрип? Ну тогда подвинься.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[2]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.02.08 18:01
Оценка:
Здравствуйте, Niovol, Вы писали:

N>Интересно мнение обитателей форума на то, какие языки являются наиболее мощными.


Для начала надо определиться с тем, что такое мощность языка.
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[3]: Потерялся, ищу совета
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 03.02.08 18:14
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


N>>Интересно мнение обитателей форума на то, какие языки являются наиболее мощными.


AVK>Для начала надо определиться с тем, что такое мощность языка.


Ну как же -- это размер такой волшебной красной кнопки, на которую нажимаешь и все работает. Чем больше кнопка, тем мощнее язык.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Потерялся, ищу совета
От: c-smile Канада http://terrainformatica.com
Дата: 03.02.08 20:53
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Здравствуйте, FR, Вы писали:


FR>>Занял место поближе в ожидании большого флейма


ДГ>А что, разве тут народ ещё не охрип? Ну тогда подвинься.


На вашей рельсе место еще осталось? Тогда подвигайтесь — я тоже хочу послушать.
Re[3]: Потерялся, ищу совета
От: Flying Dutchman Украина  
Дата: 03.02.08 21:05
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


N>>Интересно мнение обитателей форума на то, какие языки являются наиболее мощными.


AVK>Для начала надо определиться с тем, что такое мощность языка.


Для этого можно, например, использовать следующий метод (кажется, этот метод был описан еще Холстедом
в его "Науке о программах"):

1. Написать на исследуемом языке программу.
2. Написать аналогичную программу на ассемблере.
2. Измерить длины обеих программ.
3. Можность языка — логарифм (десятичный) длины программы на ассмблере, деленной на длину
программы на исследуемом языке + 1(При этом можность ассемблера становится равной 1).

Например, если программа занимает 1000 строк на ассемблере, 100 строк на C и
10 строк на OCAML, то мощность C составит 2, а мощность OCAML — 3.

При этом возникает вопрос — как измерять длину программы. Строками,
наверное, не самый лучший способ. Наверное, точнее было бы по числу лексем
в исходном тексте.
Re[2]: Потерялся, ищу совета
От: Klapaucius  
Дата: 03.02.08 21:17
Оценка: 79 (7) +2 :)
Здравствуйте, Niovol, Вы писали:

N>Интересно мнение обитателей форума на то, какие языки являются наиболее мощными.


Вообще, "мощность языка" понятие довольно невнятное, для которого у каждого может быть свое интуитивное понимание. Лично я оцениваю мощность языка по сопротивлению, которое он оказывает при попытках думать и говорить на нем. Собственно, из самой статьи про парадокс Блаба следует, что мощность языка субъективна, ведь для того, кто думает на Блабе все языки не мощнее Блаба (в данном случае для Грэма все языки не мощнее LISPа). Статью я читал довольно давно, а перечитывать мне ее лень, но, если мне не изменяет память, ясного представления о том, что автор подразумевает под мощностью у меня не сложилось.

Эпиграф:

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

О.Генри

Можно ли выразить эту мощность в отрыве от мозговых тараканов? Попробовать можно, но, вернее всего, ничего не получится.
Если же все-таки попробовать, то я бы разделил одно большое зло на три малых — это уже прогресс.
То, что я понимаю под мощностью состоит из трех компанентов: выразительность, декларативность и легковесность.
1) Выразительность (по моему, наиболее туманное понятие из всех трех) дается большим количеством сущностей.
Предположим, у нас есть уравнения Максвелла записанные покомпонентно — т.е. неохватное нагромождение элементарных вещей.
Зная что такое трехмерные векторы и дифференциальные операторы можно записать более компактно и красиво, а использовав четырехвекторы и оператор Даламбера — еще компактнее и красивее. Цена успеха — необходимость знать все эти сущности. Про такое обычно говорят "более высокий уровень". Реакция человека от сохи: "посмотрел я ваше Тряляля — ничего не понял".
Считается, что безусловный переход проще, чем лексическое замыкание — первое я изучал в школе, а второе — нет.
2) Декларативность, по счастью, тривиальна. Есть мнение, что формулировка задачи
def ngt5 = numbers.Filter(_ > 5)

предпочтительнее описания пошагового решения
list<int> ngt5 = new list<int>();
for(int i = 0; i < numbers.Count; i++)
    if(numbers[i] > 5) ngt5.Add(numbers[i]);

3) Легковесный синтаксис это то, что позволяет пользоваться возможностями языка.
Если синтаксис монструозен, (классический пример:
delegate(int a, int b){ return a + b; }

) то полезное средство легко может оказаться непригодным для использования.
Некоторое облегчение вроде
(a, b) => a + b

уже позволяет дышать, но хочется чего-то вроде (+) или _ + _
Упрощенно: громоздкий синтаксис тяготеет к литературному языку и доступен после окончания первого класса; легковесный — тяготеет к математической нотации, с понятными проблемами — первого класса уже недостаточно!
"Вчера посмотрел Траляля — одни закорючки" — примерно так я реагирую, например, на язык k.

N>Прошу всех кому не лень написать в порядке убывания мощности несколько языков, и почему они занимают в вашем списке такое место.


Надеюсь, что лень спасет форум.
... << RSDN@Home 1.2.0 alpha rev. 726>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[4]: Потерялся, ищу совета
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.02.08 21:29
Оценка:
Здравствуйте, Flying Dutchman, Вы писали:

FD>1. Написать на исследуемом языке программу.


Какую?

FD>2. Написать аналогичную программу на ассемблере.

FD>2. Измерить длины обеих программ.

В чем мерять будем? В символах? Тогда брейнфак рулит . И как со стандартными библиотеками. Использовать? API ОС?

FD>Например, если программа занимает 1000 строк на ассемблере, 100 строк на C и

FD>10 строк на OCAML, то мощность C составит 2, а мощность OCAML — 3.

Ах в строках. А если программу на С написать в одну строку? С будем мощнее OCAML в 10 раз?

FD>наверное, не самый лучший способ. Наверное, точнее было бы по числу лексем

FD>в исходном тексте.

Т.е., скажем, при прочих равных, ООП язык менее мощен, нежели структурный, поскольку на объявление контракта объекта явно уйдет больше лексем, чем если бы это была одна длинная поцедура?
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[5]: Потерялся, ищу совета
От: FR  
Дата: 04.02.08 04:51
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>На вашей рельсе место еще осталось? Тогда подвигайтесь — я тоже хочу послушать.


Тихо, тихо не шуми
Хотя можно кое-что громко кричать: "Влад Немерли, Немерли" + добавить ругательств по вкусу
Re: Потерялся, ищу совета
От: Delight  
Дата: 04.02.08 05:21
Оценка: 24 (3) :))) :))) :))) :))) :)))
assert youKnowWhatYouReallyWant == true;
if (iAmWritingForPersonalUseOnly()) {
if (iWantAReallyNewParadigm()) { // actually you'll get some irreversible brain damage.
return "Huskell"; // dude, I really mean the DAMAGE!
return "F#"; I knew you'd skip the line above.
}
else {
if (isDynamicTypingOk()) { // hey, everyone wanna be a cool geek today.
if (cannotLiveWithoutCurlyBraces()) { // well, who can ?!
return "Ruby"; // it's Python done better.
}
else {
return "Python"; // it's Ruby done right.
}
}
else { // static typing obviously
if (isManagedOk()) { // let PC do some job for me, they are so smart nowdays. Sick of doing everything myself.
if (preferJavaWorld()) { // die, MS, die!!!
return "Scala"; // huge, really huge. Must be inspired by Noah Arc.
}
else if (preferDotNetWorld()) { // stuck on Windows, ha?
return "Nemerle"; // kazalos' by... oh, not again...
}
else {
throw new IsThereReallyAnythingElseException();
}
}
else if (unmanagedOnly()) { // computers will eliminate the humankind if they get enough control.
return "D"; // get a whole new language with every new release. Great fun.
}
else {
throw new YouWantSomethingStrangeHereException()
}
}
}
}
else {
return "Do Whatever Your Boss Says To And Keep Your Mouth Shut Programming Language";
}
... << RSDN@Home 1.2.0 alpha rev. 726>>
Re[6]: Потерялся, ищу совета
От: c-smile Канада http://terrainformatica.com
Дата: 04.02.08 05:42
Оценка: :))) :)
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, c-smile, Вы писали:


CS>>На вашей рельсе место еще осталось? Тогда подвигайтесь — я тоже хочу послушать.


FR>Тихо, тихо не шуми

FR>Хотя можно кое-что громко кричать: "Влад Немерли, Немерли" + добавить ругательств по вкусу

Сам, не шуми. Вишь горе у людей — Немерля нонче ушицы запросила.
Re[7]: Потерялся, ищу совета
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.02.08 06:27
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Вишь горе у людей — Немерля нонче ушицы запросила.


Ой, я, кажется, что-то пропустил
Можно раскрыть тему подробнее?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.