Sbtrn. Devil
> Вот поэтому стандарт - именно такое говно, каким он является
Sbtrn. Devil всё ещё мнит себя великим мыслителем.
Вообще конечно жутко, из сложного и запутанного языка сделать ещё более сложный и запутанный. И при этом оставить в языке дурацкие авто-касты! Йа ф шоке.
TarasB
> слово const писать часто в лом
А писать var(Immutable[int]), function(T) и пр. не в лом?
Я лично, давно уже пишу вместо const int32_t просто ci32. Благо язык настолько невероятно и непредставимо мощен, что позволяет подобное :)
.Scotina
> А, вообще, было бы не плохо, чтобы можно было самому задавать среде разработки
> свой синтаксис
Это языко-ориентированной парадигмой зовётся )
primaT
> А писать var(Immutable[int]), function(T) и пр. не в лом?
Не, тут компилятор проследит
primaT
> всё ещё мнит себя великим мыслителем.
И небезосновательно, что характерно.
primaT
> Вообще конечно жутко, из сложного и запутанного языка сделать ещё более сложный
> и запутанный.
На первый глаз он, может, и сложнее (для многолетних жертв старого синтаксиса), да только на самом-то деле - проще. Всё, что раньше было разрозненными концепциями с разной записью и кучей умолчаний, здесь подведено под единую сквозную семантику. Единожды догнав концепцию выражений и классов, клиент уже догнал практически весь язык. Документацию становится возможно реализовать по единой структуре с документацией обычного сдк - тут уже не нужно огроменного талмуда по базовому синтаксису, только очень-очень краткая справка по общим принципам, а далее - справка по классам. Я уж не говорю о том, насколько упрощается задача клепания полноценных подсветчиков синтаксиса и автоподсказчиков-автозаполняльщиков.
Sbtrn. Devil
То что ты предлагаешь - просто ужасно.
К сожалению, все твои темы в этом похожи :)
Sbtrn. Devil
> И небезосновательно, что характерно.
А для этого нужны основания? О_О
Sbtrn. Devil
> На первый глаз он, может, и сложнее (для многолетних жертв старого синтаксиса), да только на самом-то деле - проще.
Разработчики всевозможных языков регулярно это повторяют про свои детища. Не удивлюсь, если и Страуструп когда-то говорил нечто подобное.
А вообще твои идеи, по моему, противоречат одной из основных концепций прюсов - ту что про стрельбу в ногу. Так что пиши лучше новый язык с гейшами и го, в котором труднее будет стрелять в свою ногу, ну если тебе этого так хочется.
primaT
> А для этого нужны основания? О_О
Чтобы было небезосновательно? Нужны, конечно!
> Разработчики всевозможных языков регулярно это повторяют про свои детища
Это как раз те, которые под простотой подразумевают "меньше пукофок писать". Только из такой "простоты" (это как раз она, та самая, которая хуже воровства) получаются всякие перлы да каксели. Ц++ в своё время чем оказался сильнее обжективного Ц? Тем, что органично не приумножил синтаксических и семантических сущностей (по сравнению с обычным Ц), а возможностей при этом дал больше.
Sbtrn. Devil
> Ц++ в своё время чем оказался сильнее обжективного Ц?
Только вот то, что предлагается - на обжектив и похоже.
АААА!!! Мои глаза! х_Х
Назовите его языком Z
Grey304
> Только вот то, что предлагается - на обжектив и похоже.
Даже и близко не.
Sbtrn. Devil
> Даже и близко не.
Очень похоже.
И то и это, не тонет.
primaT
> Я лично, давно уже пишу вместо const int32_t просто ci32. Благо язык настолько
> невероятно и непредставимо мощен, что позволяет подобное :)
Я, более того, завожу новые имена (rv4) для всяких там const vector4 &
Sbtrn. Devil
> На первый глаз он, может, и сложнее
Просмотрел два раза. Куча лишних символов и скобок. Писать var(int) вместо int - лишняя трата энергии.
Sbtrn. Devil
> Всё, что раньше было разрозненными концепциями с разной записью и кучей
> умолчаний, здесь подведено под единую сквозную семантику.
ШТО? Как раз начальный вариант в плюсах и есть единая семантика: const int это просто тип, а не какая ортогональная типам категория (var/const) (паскаль же).
Единственное объединение там - это typename lold = int.
Sbtrn. Devil
> Это как раз те, которые под простотой подразумевают "меньше пукофок писать".
Хочется напомнить свою тему:
http://www.gamedev.ru/flame/forum/?id=168316#m0
В особенности вариант 3, который никому не понравился.
Буковок стало больше. Смысл стал очевиднее. Но после изучения длинного варианта хочется укороченный и понятный. Это как словесное описание против формул в математике.
Chaos_Optima
> Очень похоже.
> И то и это, не тонет.
В этом смысле обжективЦ похож больше на $hарп, они не тонут примерно одинаково, по примерно одним и тем же механизмам плавучести. На стандарт-11 не похож: увы, сказать, что последний "не тонет" - будет некорректно.
Methos
> Просмотрел два раза. Куча лишних символов и скобок. Писать var(int) вместо int
> - лишняя трата энергии.
Во-первых, для лентяев Человечество изобрело автокомплит (который в моём случае, кстати говоря, напейсать будет несоизмеримо проще, чем для конвенциональных стандартов). А во-вторых, среди буковок, на напейсание которых приходится тратить энергию (быдло)кодеру, затраты на декларацию занимают крайне незначительный процент. Даже в поцакле всех на самом деле бесит (признавайтесь все!) не то, каким синтаксисом объявляются переменные, а то, что для их пропейсания нужно скроллиться в строго определённое место кода. В жабаскриптоидах, где синтаксис практически тот же, но нет такого ограничения, никого уже не бесит.
> ШТО? Как раз начальный вариант в плюсах и есть единая семантика: const int это
> просто тип, а не какая ортогональная типам категория (var/const) (паскаль же).
Ага, щазз. Вопрос на засыпку: можно ли использовать const int в параметре шаблона? А если оно - параметр функции? А если оно - const-член const-переменной структурного типа? Другой вопрос на засыпку: можно ли получить указатель/ссылку на const int в любом качестве? То-то же. Во какое единство семантики.
Неспроста афторы стандарта-11, скрипя зубами, ввели понятие constexpr, не пожалев для него целого нового слова. И с другой стороны - неспроста афторы жабы и $hарпа, спионерив из Ц++ всю базовую семантику, не стали пионерить концепцию const-а и "const-корректности". Да и вообще, этой концепции именно в таком виде нет больше нигде, кроме как в Ц++ (и ещё в Ц, но там она такая по историческим причинам, и язык таков, что её нечёткость для его семнатики некритична).
const - это особо явный и вопиющий образец непродуманности в Ц++-стандарте. И видно невооружённым глазом, что стандартщики сами ему не рады и избавились бы незамедлительно, если б не "обратная совместимость". Другой вопрос, что им бы честно признаться: "Да, это наша лажа (конкретно - лажа Страуструпа, дедушка не подумал наперёд, а потом стало поздно), мы от неё хотим избавиться, но пока не видим как." - но они вместо этого делают вид, что усё пучком, и рисовать сказки, какая это глубоко продуманная и архиполезная штука const, и почему её обязательно нужно использовать. Это не делает им чести. А если кто-то из них так считает на полном серьёзе - то не делает чести ещё больше.
> В особенности вариант 3, который никому не понравился.
Немудрено, что он никому не понравился. Проблемность человеческого языка не в том, что он многословен, а в том, что он, в общем-то говоря, достаточно коряв и семантически непоследователен. Математическо-формульный язык тоже коряв; в формулировку, например, определения предела на нём врубишься далеко не сразу - но если эквивалентную формулировку дать на человеческом языке, то можно будет вообще вешаться. Тащить человеческий язык в язык программирования, где как раз требуется семантическая внятность и однозначность - неправильно по определению.
Methos
> Я, более того, завожу новые имена (rv4) для всяких там const vector4 &
Я вот таких не люблю. Понаплодят псевдонимов, потом и сами запутаются, и других запутают:
typedef struct tagMyStruc{}MyStruct, *pMyStruct; class MyClass: public MyStruct{}; MyClass* p1=NULL; const MyClass* p2=NULL; void f1(pMyStruct p){} void f2( const pMyStruct p){} void test( ) { f1( p1); // OK f2( p2); //error C2664: 'f2' : cannot convert parameter 1 from 'const MyClass *' to 'const pMyStruct' //WTF????????? }
Первую вещь, которую я осознал и прочувствовал на практике (на работе), это значение фразы "код пишется один раз. И потом много-много раз читается".
Если typedef не увеличивает читабельность в конкретном случае, и не является необходимостью - его использование только ухудшает понимание кода.
Sbtrn. Devil
> автокомплит
И что мне умного подскажет автокомплит, когда я пишу var? Прочтет мысли и догадается, что я имел ввиду var(vector4)?
> (признавайтесь все!)
Так и быть :D
> const - это особо явный и вопиющий образец непродуманности в Ц++-стандарте.
Да я согласен, что он непродуман. Тем не менее, я считаю, что этот подход дает выразить больше ограничений, нежели паскаль-стайл подход. В D чуть богаче в этом аспекте, но все равно недостаточно. А в плюсах уже поздно что-либо исправлять.
Kartonagnick
> Я вот таких не люблю.
Я так для себя пишу.
Sbtrn. Devil
> В этом смысле обжективЦ похож больше на $hарп,
Только Шарп, в отличие от ОбжЦ, никаких лишних скобочек не добавляет в C-стиль.
А объявление классов в ОбжЦ как раз на вот этот "креатив" похоже.
p.s. Единственное рацзерно - это с массивами. Да и то, проще переделать под Шарп-стиль.
Ну, еще, указатели на функции какие-то не очень удачные в С.
p.s.s. Проблемы инструментраия уж точно не надо решать за счет пользователей языков. Это компьютер - наш раб, а не наоборот.
Тема в архиве.