Re[13]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 21:25
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Суть примера ясна, а вот возможности твоей первой строки не ясны даже Синклеру А в формате это ясно прямо из записи.


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

Что же до объяснений, то пожалуйста. Их можно дать в двух строках.
Сплайс-строки позволяют использовать символ $, .. и скобки для указания "авктивных" областей в строках. Можно использовать синтаксис:
$переменная
Или:
$(выражение)
При этом строка вида:
$"Test $x test"
переписывается в строку:
"Test " + x.ToString() + " test"
Кроме того есть синтаксис ..$переменная_ссылающаяся_на_коллекцию
или ..$(выражение_возвращающее_ссылку_на_коллекцию; необязательный_разделитель; необязательная_фуннкция_корвертор).
Эта форма позволяет вывести элементы коллекции разделенные запятой (по умолчанию) или заданным тобой разделителем. При необходимости можно задать и функцию-корвертор, которая преобразовывает элементы коллекции в строки.
С их помощью можно записывать весьма сложные конкатенации строк в одну строку. Вот тебе пример генерации сигнатуры функции:
$"$attributes $funcType $funcName(..$parameters)"

Аналогичный код со стринг-форматом будет выглядеть значительно сложнее, так как во-первых, вместо осмысленных имен переменных будут использоваться безликие {индекс_параметра}, а во-вторых, стринг-формат не позволяет работать с коллекциями. Скажем для массива мы получим просто имя его типа, а не содержащиеся в нем элементы.
Кроме того типы переменных сплайс-строки контролируются во время компиляции. А в стринг-формате спокойно можно ошибиться. Например, задать не те количество параметров.

В прочем, одно преимущество у стрин-формата есть — они позволяет менять строку формата в рантайме. Сплайс-строка контролируется во время компиляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:05
Оценка:
Здравствуйте, Ikemefula, Вы писали:


M>>Но по-моему это не стёб, они всерьёз этот птичий клёкот $"output:"$" считают понятнее string.Format.

I>Эта хрень не проговаривается абсолютно, стало быть в общении между девелоперами использоваться не будет.
I>А раз общения не будет, то и распространяться будет медленно.

Проговори, плиз, вот это:
f("{0} {2} {1} {0}", a, b, c)
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:22
Оценка:
Здравствуйте, alvas, Вы писали:

A>>>А если я тебе скажу что во втором варианте могут быть рантайм ошибки, а первый их отловит на этапе компиляции?

VE>>Расскажите мне, как он их отловит. Вдруг и правда?
VE>>А то у меня подозрение, что он может отловить только одну рантайм ошибку, которая может быть во втором случае.

A>Прошу прощения, перепутал с макросом printf


За что просишь, то? $-строка не просто не даст тебе сделать никаких ошибок.
Простой пример. Пишем:
def mayVar = 1;
WriteLine($"Моя строка равна: $myvar")

Компилятор и Интеграция сразу ругнутся "пермеменная 'myvar' не опрделена" и укажут на место ошибки.
Если не указать ни одного "$" будет предупреждение.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 22:28
Оценка: 2 (1)
Здравствуйте, Ikemefula, Вы писали:

I>Да, представляешь, берем на работу студентов 3-4го курса. Наиболее перспективные кандидаты. Был случай, когда ст. 2го курса работал.


Т.е. кандидаты наиболее перспективные, но учиться уже не хотят? Как-то это не стыкуется.

I>В каком городе ты работаешь ?


В НуЁрке.

I>Ага, у вас все кандидаты наук, в какую область ни ткни, хучь медицина, хучь сопромат, так ?


Кандидатов в нашей команде нет. Нет такой необходимости.

I>И все при этом на ура знают любую часть девелопмента ?


Практически любую. Есть один индус, который занимается только SQL и Перлом. А так .NET, Web, UI, серверная бузинес логика, SQL. Каждый знает всё. И в этом есть один очень большой плюс. Узкая специализация, разделение работы горизонтально на UI, BL, DB требует постоянного взаимодействия между UI, BL и DB девелоперами. А это задержки и конфликты интересов, в худшем варианте перетягивание одеяла. В IBM я на это насмотрелся выше крыши. Специализация в софте плохо работает. Если в промышленности сталевар варит сталь, а фрезеровщик фрезерует фрезой, то их работа связана довольно чётким технологическим процессом, который в частности исключает взаимодействие этих парней между собой. В софтостроении исключить взаимодействие разных специализаций крайне сложно. В результате мы имеем постоянные нестыковки, бесконечные митинги, конфликты интересов, чем больше бумаги, тем чище жадница и прочую малоэффективную активность.

У нас разделение работы вертикальное. Один девелопер выполняет задачу от начала до конца. В идеале один девелопер — одно приложение. Естественно, стиль, общие компоненты, технологии используются одни и те же. Даже солюшин один на всех. Соответственно, я всегда имею возможность запустить чужой проект, при необходимости подправить там что-нибудь или подсмотреть.

Новые технологии, библиотеки изучаются по мере их появления и начинают применяться после их доступности в конторе на живых проектах, анализируется положительный/отрицательный опыт и принимается решение быть или не быть. Например, мы всё ещё в процессе поиска наилучшего решения для Web. AJAX от Microsoft, который UpdatePanel, был забракован после использования на одном проекте. Сейчас другой девелопер на другом проекте использует другой подход. Будет положительный результат, другие проекты тоже пойдут на этом фреймворке. Параллельно изучаются десктопно/браузерные альтернативы типа XBAP, WPF, Silverlight. И т.п.

В результате, процесс обучения непрерывен, распределён между тимерами и полученные знания легко передаются другим. Неверные решения или неудачные технологии своевременно отбраковываются и наносят минимальные ущерб. К использованию рекомендуются только проверенные на практике вещи.

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


Знаешь, когда мы были молодыми, то была такая ситуация, что и учиться было не у кого, не было ни интернетов, ни даже msdn'ов. И мы учились сами у себя. Буквально вчерашние студенты. Атмосфера была создана такая, что тяга к знаниям была у всех в команде. Постоянные обсуждения кто чего нового узнал, вау, круто, а если так и т.п. Все, буквально все тогдашние молодые специалисты из нашей команды стали хорошими инженерами с глубокими знаниями тех инструментов, с которыми они работают. И сегодня, кроме, конечно, тех, кто ушел в управление, любому за пол часа можно объяснить что угодно, если можешь объяснять, а он хочет слушать. Попробуйте у себя создать такую атмосферу, чтобы если даже ваши студенты шли пить пиво, то обсуждали между собой только новые технологии. И процесс обучения так пойдёт, что его трудно будет остановить. Они ещё тебя будут учить
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 22:33
Оценка: +4
Здравствуйте, Ikemefula, Вы писали:

I>До объективности тут как до небес — нет ни одной оценки сложности от тебя или от Влада.


Какая оценка сложности? Сплайс-строки воспринимаются на уровне здравого смысла, больше ничего не надо. Не говори мне, что глянув на них в моём примере ты не понял о чём речь.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 22:38
Оценка: :))
Здравствуйте, Lloyd, Вы писали:

IT>>$"Output: $a"

IT>>string.Format("Output: {0}", a)

L>Кстати, а как предполагается локализовывать подобного рода строки?


Зачем?
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:40
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

S>А я на полном серьезе считаю, что второй вариант очень сложный, но мощный. Я до сих пор путаюсь в format specifiers, но зато я могу, к примеру, точно выбрать формат вывода даты.

S>Доллар-нотация мне не нравится потому, что я к ней не привык, и потому, что я не понимаю как, к примеру, указать необходимость выводить два знака после запятой. Хотя объяснять ее, несомненно, проще.

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

S>Может, кто-нибудь из фанатов Nemerle покажет мне, как написать аналог вот этого:


S>
S>Console.WriteLine("Rum-Coke: ${0:F2}", 10/3);
S>


Это просто не реализовано. Если действительно надо, то можно вызвать функцию форматирования:
$"Rum-Coke: $(F2(10 / 3))"

Или тупо воспользоваться форматом.

ЗЫ

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

ЗЫЫ

Не надо называть тех кто выбрал Немерле фанатами. На фоне приверженцев остальных языков Немерлисты выглядят просто ангелами.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 22:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>За что просишь, то? $-строка не просто не даст тебе сделать никаких ошибок.

VD>Простой пример. Пишем:
VD>
VD>def mayVar = 1;
VD>WriteLine($"Моя строка равна: $myvar")
VD>

VD>Компилятор и Интеграция сразу ругнутся "пермеменная 'myvar' не опрделена" и укажут на место ошибки.
VD>Если не указать ни одного "$" будет предупреждение.
Какое предупреждение? Не могу представить. Вроде как без любого из $ (или даже обоих) всё нормально.
Или предупреждение, что mayVar не используется?

Пример, кстати, неудачный, так как собственно фишки и не показывает. Ибо в аналогичном случае в C# всё будет так же:
int mayVar = 1;
WriteLine("Моя строка равна: {0}", myvar);


Я так понимаю, что отловит он ошибку количества аргументов. Это я придрался, конечно, к слишком общей фразе.
Куда интереснее printf, но вот на Cayenne он выглядит на порядок проще.
Re[6]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:42
Оценка:
Здравствуйте, Lloyd, Вы писали:

A>>Плюс проверка типов параметров во время компиляции.


L>Зачем здесь проверка типов параметров?


Правильнее будет сказать "проверка корректности выражения". Например, проверяется, что в выражении используются только объявленные выше переменные и функции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:45
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Кстати, а как предполагается локализовывать подобного рода строки?


Никак. Они для этого не предназначены. Но народ наклепал другие макры которые не просто локализуют строки, а автоматизируют этот процесс и делают его очень простым.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 22:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>ЗЫЫ


VD>Не надо называть тех кто выбрал Немерле фанатами. На фоне приверженцев остальных языков Немерлисты выглядят просто ангелами.


Ну это же не оправдание! Так ведь перестанут Немерлистов фанатами называть, и те, кто выбрал другие языки, тоже потребуют такой эмансипации. Глядишь, и фанатов не останется!
Re[7]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 22:49
Оценка:
Здравствуйте, VladD2, Вы писали:

IT>>Первый вариант тоже имеет право на жизнь и часто используется. У меня в конторе народ генерирует генератором Linq2SQL набор классов по БД, зачем вычищает оттуда весь мусор и уже далее поддерживает этот код вручную. В принципе, ничего плохого в этом нет. Небольшая автоматизации на начальном этапе.


VD>Я бы за это руки отрывал. Намного проще создать качественный генератор.


За что? За то, что я написал следующий код не руками, а сгенерировал и уже больше никогда не испльзовал генератор?

public class Person
{
    public string FirstName { get; set; }
    public string LastName  { get; set; }
}

А проблему, которую пораждает такой подход ты можешь назвать?
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:50
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Откуда взялись твои оценки сложности ? Здесь то и зарыта собака.


Из:
1. Собственного опыта.
2. Из многочисленных исследований.
3. Из высказываний коллег.

I>Разумеется, если разработчик в состоянии осилить такую глубину и большую, то ему будет легче. Речь то не об этом.


I>Судя потому, что люди плохо понимают виртуальные методы, интефейсы, индексеры, итераторы и эвенты, любое новшество это уже чрезмерное усложнение.


Судя по некоторым из посетителей этого форума людям в пещерах еще нужно жить, но это же глупо... всем жить в пещерах если по улицам ходит много неандертальцев.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:51
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>Нужно переходить на следующий уровень мышления.

VE>Кому нужно? Кому нужно, чтобы большое кол-во программистов перешло на следующий уровень мышления?

Тому кому надоел каменный топор как орудие труда.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:52
Оценка:
Здравствуйте, VoidEx, Вы писали:

A>>Прикол в том что и не нужно. Nemerle имеет их несколько.


A>>писать как на c# — блаб

A>>в функциональном стиле — up
A>>макросы nemerle — up

VE>А что ж не пишут?


Кто? Вы? Мы пишем.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 22:54
Оценка:
Здравствуйте, Ikemefula, Вы писали:

A>>Это проблема думать на Блабе
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.


I>Я не понял что ты хотел сказать.


А ты прочит посылочку. Может поймешь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Что меня не устраивает в МП в Nemerle
От: IT Россия linq2db.com
Дата: 28.12.08 22:55
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Все новое в программировании вводит новые абстракции, а все что существует — конкретная реализация абстракций. Если вы пытаетесь объяснить новые абстракции через существующие реализации, то ничего у вас не выйдет. Для примера попробуйте объяснить замыкания тому кто на среднем уровне знает C\C++ и только его.


Легко, если человек понимает что такое указатель на функцию.
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 22:59
Оценка:
Здравствуйте, VladD2, Вы писали:

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


A>>>Нужно переходить на следующий уровень мышления.

VE>>Кому нужно? Кому нужно, чтобы большое кол-во программистов перешло на следующий уровень мышления?

VD>Тому кому надоел каменный топор как орудие труда.


Не понял. Тому, кому надоел каменный топор как орудие труда, нужно, чтобы другие какие-то программисты (тысячи их) переходили на следующий уровень мышления? Ну допустим. А зачем им это нужно? И много ли таких?
Просто вот получается, что чуть ли не всем должно быть нужно, чтобы тысячи программистов переходили на новый уровень мышления. А кто-то, кто уже перешёл на два порядка мышления, создаёт станок, на котором баран может кнопки жать, и нанимает всех этих не перешедших на новый уровень, и они на него арбайтают. Что-то мне кажется, что в данной ситуации на коне будет создатель этого станка.
И как ни странно, такой станок создать не проще, чем мощный супер-пупер универсальный язык. Но это само собой отрицается сторонниками супер-пупер языка, потому что они думают, что если инструмент слабее, то и создатель тупее. Точнее, они хотят так думать.
Re[16]: Что меня не устраивает в МП в Nemerle
От: VoidEx  
Дата: 28.12.08 23:00
Оценка:
Здравствуйте, VladD2, Вы писали:

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


A>>>Прикол в том что и не нужно. Nemerle имеет их несколько.


A>>>писать как на c# — блаб

A>>>в функциональном стиле — up
A>>>макросы nemerle — up

VE>>А что ж не пишут?


VD>Кто? Вы? Мы пишем.


Ну вы-то спецы и пользуетесь макросами. А тут разговор, что массы могут как на C# писать. Вот я про массы. Меня 2.43 пользователя ЛИСП, например, мало интересуют.
Re[11]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.12.08 23:04
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Кстати, парадокс Блаба — сладкая самообманка для "элиты", потому-то её так и любят пользователи крутых (по всем параметрам крутых!), но непризнанных (возможно пока, хотя насчёт ЛИСПа уже почти и сомнений нет, у Немерле ещё всё впереди) языков, автоматически записывая остальных в Блабы, даже если понимают, что это не так.

VE>И уж это чья угодно проблема, но никак не программистов, которые выбирают язык.

Не, парадокс Блаба — это фак. Он осязаем.

Что до "автоматически записывая остальных в Блабы", то это не так.
Скажем человек уверенно программирующий на одном функциональном языке без проблем поймет другого человека пишущего на другом ФЯ если речь пойдет о ФП. Это происходит потому, что они имеют нужную базу (терминологию, понятия, подходы, принципы... в общем, парадигму). Человек хорошо разбирающиейся в МП (например, Лиспер) поймет другого такого же человека изучавшего МП по другим источникам (например Немерлист). Но человек знакомый только с МП уже может не понять идей и подходов того кто знает МП и ФП.
Причем только человек знакомый со всеми парадигмами может здраво судить о языках их использующих, так как только у него есть нужная база, чтобы просто осознать то о чем идет речь.

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