Re[10]: Синтаксический оверхед в C# / Java
От: L.C.R. Россия lj://_lcr_
Дата: 08.07.05 14:03
Оценка:
Трурль,

ПК>>Нужно ключевое слово, обозначающее автоматический вывод типа, а не являющееся признаком объявления переменной. Не вижу, каким образом var справляется с первой задачей лучше, чем auto...


Т>Ну, можно попробовать let


Да, type inference by ocaml очень симпатичная вещь. Правда и там есть минусик:
let a = 1.0 +. float_of_int 1;;

Вот эти козявки +. и float_of_int портят всю красоту
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[3]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.05 14:36
Оценка:
Здравствуйте, eugals, Вы писали:

VD>>И чем это будет отличаться от вызова функции?

E>Именем. Вряд ли кому-то взбредет в голову называть функцию "MyClass".
E>К тому же, что касается Джавы, то там есть общепринятая Naming Convention, в сообветствии с которой классы называются в "паскале", а методы в "кемеле".

1. На яве свет клином не сошелся. В Шарпе конвенции как раз такие что имена методов и классов все пишутся в паскальных соглашениях.
2. Это не застрахует просто не верного названия. Конвенции соблюдают далеко не все.
3. Вместо MyClass в программе может быть Xyz и можно будет долго потом бить себя в грудь и обзывать всех ламерами.

В общем, пустой разговор. Проблем в написании ключевого слова нет. Места оно занимает не много. Это поведение совпадает с С++ и тем самым позволяет проще переходить на Шарп с этого языка. Так что обсуждать особо нечего. Эдак можно до чего хочешь докапаться.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.05 14:36
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Нужно ключевое слово, обозначающее автоматический вывод типа, а не являющееся признаком объявления переменной. Не вижу, каким образом var справляется с первой задачей лучше, чем auto...


var просто понятно. А auto нет. Только и всего. Конечно зазубрив что auto == объявлению переменной дальше можнобудет жить спокойно. Но интуитивности это не прибавит и язык будет изучать еще сложнее. В прочем это уже капля в море. К тому же не факт что пойдет даже это предложение.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.05 17:14
Оценка:
Здравствуйте, IT, Вы писали:

IT>AVK, не веди себя как беспощадный компилятор. Ну ошибся человек, но из контекста же понятно что имеется ввиду


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

Кстати, именно по этому и не нужно пытаться устранить тут new.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Синтаксический оверхед в C# / Java
От: L.C.R. Россия lj://_lcr_
Дата: 08.07.05 18:20
Оценка:
VladD2,

VD>>>И чем это будет отличаться от вызова функции?

E>>Именем. Вряд ли кому-то взбредет в голову называть функцию "MyClass".

VD>1. На яве свет клином не сошелся. В Шарпе конвенции как раз такие что имена методов и классов все пишутся в паскальных соглашениях.

VD>2. Это не застрахует просто не верного названия. Конвенции соблюдают далеко не все.
VD>3. Вместо MyClass в программе может быть Xyz и можно будет долго потом бить себя в грудь и обзывать всех ламерами.

Так то оно так, но конвенции о наименованиях суть следствия синтаксиса языка. Не содержал бы шарп new — конвенции (возможно) были бы другими.

VD>В общем, пустой разговор. Проблем в написании ключевого слова нет. Места оно занимает не много. Это поведение совпадает с С++ и тем самым позволяет проще переходить на Шарп с этого языка. Так что обсуждать особо нечего. Эдак можно до чего хочешь докапаться.


Шарп с Джавой конечно уже не переделаешь, а вот при создании своего языка может пригодиться.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[5]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.07.05 20:48
Оценка:
Здравствуйте, L.C.R., Вы писали:

LCR>Так то оно так, но конвенции о наименованиях суть следствия синтаксиса языка. Не содержал бы шарп new — конвенции (возможно) были бы другими.


Возможно. Как и возможно, что были бы такими же. В конце концов Ява тоже new имеет, но конвенции несколько отличаются.

LCR>Шарп с Джавой конечно уже не переделаешь, а вот при создании своего языка может пригодиться.


Языков без new хватет. Та же Дельфи.

Мне другое поражает. Зачем докапываться до невызывающих проблем вещей когда полно действительно неудобных? Например, в классах приходится называть конструтктор именем класса. Проблем от этого море. А ведь можно было бы назвать "Constructor" и проблем бы небыло. Или вот в Шарпе неудобно инициализировать статически инициализируемые массивы если тип элемента не встроенных примитив.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Синтаксический оверхед в C# / Java
От: L.C.R. Россия lj://_lcr_
Дата: 08.07.05 21:27
Оценка:
VladD2,

LCR>>Шарп с Джавой конечно уже не переделаешь, а вот при создании своего языка может пригодиться.

VD>Языков без new хватет. Та же Дельфи.

Создавать свой язык приходится тогда, когда существующие языки подходят негладко к проблемной области. Дельфи — лишь один из многих "неподходящих гладко".

VD>Мне другое поражает. Зачем докапываться до невызывающих проблем вещей когда полно действительно неудобных? Например, в классах приходится называть конструтктор именем класса. Проблем от этого море. А ведь можно было бы назвать "Constructor" и проблем бы небыло. Или вот в Шарпе неудобно инициализировать статически инициализируемые массивы если тип элемента не встроенных примитив.


Take it easy. Меня только интересовал вопрос, потеряет ли что-нибудь язык, если выкинуть из него new. Этот вопрос пришёл мне в голову, когда я разглядывал результаты эксперимента Nemerle. В этом языке есть любопытные моменты, и в частности есть type inference и при создании объектов не нужен new:
[c#]
new Class (parms) // C#
Class (parms) // Nemerle
[c]

xxx: Пожалуй имеет смысл предупредить о следующем: я не собираюсь развязывать войну Nemerle vs All — это только эксперимент. Могу только сказать, что я планирую пост о возможностях этого языка.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[7]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.07.05 18:55
Оценка:
Здравствуйте, L.C.R., Вы писали:

LCR>Создавать свой язык приходится тогда, когда существующие языки подходят негладко к проблемной области. Дельфи — лишь один из многих "неподходящих гладко".


DSL?

LCR>Take it easy. Меня только интересовал вопрос, потеряет ли что-нибудь язык, если выкинуть из него new.


Потеряет. Язык спроектирован в рассчете на использование new. И по-моему ничего ровным счетом не приобретет.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Синтаксический оверхед в C# / Java
От: L.C.R. Россия lj://_lcr_
Дата: 10.07.05 19:13
Оценка:
VladD2,

VD>DSL?


Никогда не использовал. Маленького своего джарчика в каталоге lib хватает за глаза. Но гляну на досуге.

LCR>>Take it easy. Меня только интересовал вопрос, потеряет ли что-нибудь язык, если выкинуть из него new.


VD>Потеряет. Язык спроектирован в рассчете на использование new. И по-моему ничего ровным счетом не приобретет.


Да, я понял твою т.з. с начала ветки.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[8]: Синтаксический оверхед в C# / Java
От: L.C.R. Россия lj://_lcr_
Дата: 10.07.05 20:01
Оценка:
VladD2,

VD>DSL?


Ну в-общем посмотрел я в хистори форума и в сети — понял только, что DSL — это нечто аморфное и неконкретное, вообще непонятно что. Что ты имел ввиду-то, говоря "DSL"?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[9]: Синтаксический оверхед в C# / Java
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.07.05 07:43
Оценка:
Здравствуйте, L.C.R., Вы писали:

LCR>Ну в-общем посмотрел я в хистори форума и в сети — понял только, что DSL — это нечто аморфное и неконкретное, вообще непонятно что. Что ты имел ввиду-то, говоря "DSL"?


http://en.wikipedia.org/wiki/Domain_Specific_Language
... << RSDN@Home 1.2.0 alpha rev. 543>>
AVK Blog
Re[10]: Синтаксический оверхед в C# / Java
От: L.C.R. Россия lj://_lcr_
Дата: 11.07.05 13:01
Оценка:
AndrewVK,

LCR>>Ну в-общем посмотрел я в хистори форума и в сети — понял только, что DSL — это нечто аморфное и неконкретное, вообще непонятно что. Что ты имел ввиду-то, говоря "DSL"?


AVK>http://en.wikipedia.org/wiki/Domain_Specific_Language


Во-во, я и говорю — аморфное. Это не язык вовсе, а видимо некоторое направление в программировании. Кроме того, у меня возникает ощущение, что большинство программистов используют DSL в своей работе, даже не подозревая об этом. Этот "DSL" — это семейство классов, функций и переменных. Domain Specific? Безусловно. Language? Да!

Впрочем, к new это уже имеет отдалённое отношение.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[11]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.08.05 08:47
Оценка:
Здравствуйте, L.C.R., Вы писали:

LCR>Во-во, я и говорю — аморфное. Это не язык вовсе, а видимо некоторое направление в программировании.


Язык, язык.

LCR> Кроме того, у меня возникает ощущение, что большинство программистов используют DSL в своей работе, даже не подозревая об этом. Этот "DSL" — это семейство классов, функций и переменных. Domain Specific? Безусловно. Language? Да!


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

В общем, идея простая. Мы создаем очень высокоуровневый язык за счет того, что затачиваем его на решение конкретных проблем. А потом создаем нечто позволяющее выполнять этот язык или преобрзовывать в менее специализированный.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Синтаксический оверхед в C# / Java
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.01.06 04:09
Оценка:
Здравствуйте, L.C.R., Вы писали:

LCR>xxx: Пожалуй имеет смысл предупредить о следующем: я не собираюсь развязывать войну Nemerle vs All — это только эксперимент. Могу только сказать, что я планирую пост о возможностях этого языка.


И как реализация планов?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Синтаксический оверхед в C# / Java
От: Шахтер Интернет  
Дата: 28.01.06 16:06
Оценка: +1 -1 :)
Здравствуйте, L.C.R., Вы писали:

LCR>Речь пойдет о new.


LCR>Наши любимые C# и Java имеют избыточный синтаксис для создания объекта — оба этих языка используют ключевое слово new для создания объектов в куче. Спрашивается, зачем оно (ключевое слово) нужно, если всё равно создавать на стеке объекты ссылочных типов невозможно, так что приписывание лишнего new не несёт никакого дополнительного смысла.


LCR>Не лучше ли использовать просто:

LCR>
LCR>MyClass c = MyClass(10, 20);
LCR>


Это не просто -- это сложно.

Просто -- вот.

MyClass c(10, 20);


LCR>В Джаве new было введено исключительно по политическим причинам, чтобы облегчить переход C++ программистов на Джаве облегчив им узнавание привычных конструкций (создание объектов в куче). В Шарп, вероятно, new было содрано с Джавы, дабы облегчить переход C++ и Джава — программистов на Шарп


LCR>Вопрос: согласны ли вы, что new избыточен? Нет ли каких-нибудь синтаксических косяков (гипотетическое) исключение new из этих языков?


Избыточен. Посто Майкрософт старалась как лучше, а получилось как всегда.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[2]: Синтаксический оверхед в C# / Java
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 30.01.06 08:41
Оценка: +1
Здравствуйте, Шахтер, Вы писали:

Ш>Это не просто -- это сложно.

Ш>Просто -- вот.
Ш>
Ш>MyClass c(10, 20);
Ш>


У объектной переменной есть два типа — статический и динамический.
Запись, навроде такой:

MyAbstractBaseClassOrInterface obj = new MyExtensionConcreteClass(params...);

позволяет указать сразу два типа.
Re[3]: Синтаксический оверхед в C# / Java
От: Шахтер Интернет  
Дата: 30.01.06 10:28
Оценка: +1 :)
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, Шахтер, Вы писали:


Ш>>Это не просто -- это сложно.

Ш>>Просто -- вот.
Ш>>
Ш>>MyClass c(10, 20);
Ш>>


СГ>У объектной переменной есть два типа — статический и динамический.

СГ>Запись, навроде такой:

СГ>MyAbstractBaseClassOrInterface obj = new MyExtensionConcreteClass(params...);


СГ>позволяет указать сразу два типа.


А зачем new?


Interface obj = Class(1,2,3) ;


И всё.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.