Re[16]: Что вас останавливает от изучения нового языка?
От: Ziaw Россия  
Дата: 22.06.11 03:49
Оценка:
Здравствуйте, FR, Вы писали:

WH>>Что мне может предложить питон?


FR>утиную типизацию вместо интерфейсов


Мне кажется будущее за языками со структурной (но с возможностью именования) типизацией и глобальным выводом типов. Сейчас вычислительные мощности просто не осилят такую компиляцию за приемлемое время. Динамика останется, но ее придется указывать явно, все остальное будет контроллировать компилятор (впрочем сейчас разница между компиляторами и интерпретаторами стерлась напрочь).
Re[5]: Что вас останавливает от изучения нового языка?
От: Ziaw Россия  
Дата: 22.06.11 04:19
Оценка:
Здравствуйте, Undying, Вы писали:

Z>>А можно по аналогии привести примеры чего чудесного сделали авторы java/c#/питона/руби/хаскеля на своих языках?


U>Авторы C#, к примеру, dotnet framework написали. Для начала двухтысячных это было прорывом.


Yet another VCL? Впрочем они молодцы конечно. Только написали не благодаря языку (вполне могли и на VB.NET) а благодаря огромному людскому ресурсу MS.

Ну и конечно же для java/nemerle/питона/руби/хаскеля есть свои аналоги, только для nemerle пришлось писать совсем немного, в его распоряжении уже есть весь фреймворк.
Re[6]: Что вас останавливает от изучения нового языка?
От: hattab  
Дата: 22.06.11 05:35
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z> Yet another VCL?


Ну ты сравнил...
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[5]: Что вас останавливает от изучения нового языка?
От: hattab  
Дата: 22.06.11 05:47
Оценка:
Здравствуйте, Undying, Вы писали:

U> Z>А можно по аналогии привести примеры чего чудесного сделали авторы java/c#/питона/руби/хаскеля на своих языках?


U> Авторы C#, к примеру, dotnet framework написали. Для начала двухтысячных это было прорывом.


Yet another Java В чем прорыв?
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[6]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 22.06.11 16:56
Оценка:
Здравствуйте, hattab, Вы писали:

U>> Авторы C#, к примеру, dotnet framework написали. Для начала двухтысячных это было прорывом.

H>Yet another Java В чем прорыв?

На шарп же народ не с Java переманивали, а с плюсов. А на плюсах простого в освоении и написанного в едином стиле фрамеворка на все случаи жизни не было. Поэтому шарп быстро и взлетел, несмотря на то что до версии 2.0 он как язык был еще тем убожеством.
Re[6]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 22.06.11 17:04
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Yet another VCL? Впрочем они молодцы конечно. Только написали не благодаря языку (вполне могли и на VB.NET) а благодаря огромному людскому ресурсу MS.


Причем здесь благодаря чему фрамеворк был написан? Речь о том, что благодаря дотнет фрамеворку решение типовых задач при переходе на шарп кардинально упростилось.

Z>Ну и конечно же для java/nemerle/питона/руби/хаскеля есть свои аналоги, только для nemerle пришлось писать совсем немного, в его распоряжении уже есть весь фреймворк.


Так это и плохо. Раз библиотек написанных под Nemerle практически нет, то нет и кардинального упрощения решения типовых задач при переходе на Nemerle. Какая разница будешь ты использовать дотнетовскую библиотеку из под шарпа или из под Nemerle?
Re[7]: Что вас останавливает от изучения нового языка?
От: hattab  
Дата: 22.06.11 17:26
Оценка: +1
Здравствуйте, Undying, Вы писали:

U> U>> Авторы C#, к примеру, dotnet framework написали. Для начала двухтысячных это было прорывом.


U> H>Yet another Java В чем прорыв?


U> На шарп же народ не с Java переманивали, а с плюсов. А на плюсах простого в освоении и написанного в едином стиле фрамеворка на все случаи жизни не было.


Ну как же, когда дотнет называли жабой от майкрософт (и чем он по сути и является)
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[7]: Что вас останавливает от изучения нового языка?
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 22.06.11 17:32
Оценка:
Здравствуйте, Undying, Вы писали:

U>Какая разница будешь ты использовать дотнетовскую библиотеку из под шарпа или из под Nemerle?


C#:
var sha1Bytes = SHA1Managed().ComputeHash(UTF8Encoding().GetBytes(String.Format("{0}{1}", param1, param2));
var stringBuilder = StringBuilder();
for (var i = 0; i < sha1Bytes.Length; i++) 
    stringBuilder.Append(sha1Bytes[i].ToString("x2"));
var sha1 = stringBuilder.ToString();


Nemerle:
def sha1 = $<#..$(SHA1Managed().ComputeHash(UTF8Encoding().GetBytes($"$param1$param2")); ""; _.ToString("x2"))#>;

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[8]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 22.06.11 18:06
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Nemerle:

KV>
KV>def sha1 = $<#..$(SHA1Managed().ComputeHash(UTF8Encoding().GetBytes($"$param1$param2")); ""; _.ToString("x2"))#>;
KV>


Новый способ записи форматированной строки это хорошо, но мало.

Записать в одну строчку можно и на шарпе, что-то вроде:

string sha1 = string.Join("", SHA1Managed().ComputeHash(UTF8Encoding().GetBytes(string.Format("{0}{1}", param1, param2)), x=>x.ToString("x2"));


Обилие спецсимволов в записи это минус, а не плюс.
Re[9]: Что вас останавливает от изучения нового языка?
От: Ziaw Россия  
Дата: 22.06.11 18:19
Оценка:
Здравствуйте, Undying, Вы писали:

U>Новый способ записи форматированной строки это хорошо, но мало.


Dictionary<int, int> VeryLongPureEvaluationCache = new Dictionary<int, int>();
int VeryLongPureEvaluation(int arg)
{
   if (VeryLongPureEvaluationCache.ContainsKey(arg))
     return VeryLongPureEvaluationCache[arg];

   // evaluation

   VeryLongPureEvaluationCache[arg] = result;

   return result;
}


[Memoize]
VeryLongPureEvaluation(arg : int) : int
{
   // evaluation
}


Таких полезняшек полно. Причем ты их можешь делать сам.
Re[10]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 22.06.11 18:42
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>
Z>[Memoize]
Z>VeryLongPureEvaluation(arg : int) : int
Z>{
Z>   // evaluation
Z>}
Z>


readonly LazyCache<int, int> VeryLongPureEvaluationCache = new LazyCache<int, int>((arg) => 
  {
    // evaluation 
  }
);

int VeryLongPureEvaluation(int arg)
{
  return VeryLongPureEvaluationCache.GetOrCalc(arg);
}


Т.е. и выигрыша особого нет, и главное это все мелочи. Для кардинального упрощения решения типовых задач нужны законченные библиотеки, использующие иные (более простые и прозрачные) принципы по сравнению со стандартными дотнетовскими. А одного синтаксического сахара для смены языка мало.
Re[8]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 22.06.11 18:47
Оценка:
Здравствуйте, hattab, Вы писали:

U>> На шарп же народ не с Java переманивали, а с плюсов. А на плюсах простого в освоении и написанного в едином стиле фрамеворка на все случаи жизни не было.


H>Ну как же, когда дотнет называли жабой от майкрософт (и чем он по сути и является)


Именно поэтому с джавы на шарп почти никто не переходил, т.к. смысла менять шило на мыло было не много. А вот с плюсов народ начал переходить очень активно.
Re[9]: Что вас останавливает от изучения нового языка?
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 22.06.11 19:30
Оценка:
Здравствуйте, Undying, Вы писали:

regexp match (str) {
    | "a+.*" => printf ("a\n");
    | @"(?<num : int>\d+)-\w+" => printf ("%d\n", num + 3);
    | "(?<name>(Ala|Kasia))? ma kota" =>
         match (name) {
             | Some (n) => printf ("%s\n", n)
             | None => printf ("noname?\n")
         }
    | _ => printf ("default\n");
}


if (str == null)
{
    Console.WriteLine("default");
}
else
{
    var regexObj = new Regex(@"(?<g1>^a+.*$)|(?<g2>^(?<num>\d+)-\w+$)|(?<g3>^(?<name>(Ala|Kasia))? ma kota$)", RegexOptions.ExplicitCapture | RegexOptions.Compiled);
    var match = regexObj.Match(str);
    if (match.Success)
    {
        if (match.Groups["g3"].Success)
        {
            if (!(match.Groups["name"].Success))
            {
                Console.WriteLine("noname?");
            }
            else
            {
                Console.WriteLine(match.Groups["name"].Value);
            }
        }
        else if (match.Groups["g2"].Success)
        {
            Console.WriteLine(int.Parse(match.Groups["num"].ToString()) + 3);
        }
        else
        {
            Console.WriteLine("a");
        }
    }
    else
    {
        Console.WriteLine("default");
    }
}


Конечно, ты и на это скажешь, что оно частный случай: новый способ матчинга регулярных выражений. Но я намекаю не на новые способы. И "обилие спецсимволов", и этот пример, не имеют отношения непосредственно к языку. Это макросы, за которые спрятана работа с библиотеками, в т.ч. со стандартными .NET. Ты можешь взять некоторое количество похожих друг на друга частных случаев использования средств сторонних библиотек, выделить в них общую часть и реализовать макрос, позволяющий решать эти частные случаи декларативным образом (описывая желаемый результат, а не шаги по его достижению). И поэтому работа с библиотеками в нем может несколько отличаться от других языков. Вплоть до того, что ты не будешь должен даже задумываться, с какой библиотекой ты работаешь и каким образом она приводит тебя к желаемому результату, сосредоточившись на решение твоих задач, а не задач используемого окружения.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[9]: Что вас останавливает от изучения нового языка?
От: hattab  
Дата: 22.06.11 19:52
Оценка:
Здравствуйте, Undying, Вы писали:

U> U>> На шарп же народ не с Java переманивали, а с плюсов. А на плюсах простого в освоении и написанного в едином стиле фрамеворка на все случаи жизни не было.


U> H>Ну как же, когда дотнет называли жабой от майкрософт (и чем он по сути и является)


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


Следовательно и прорыва никакого небыло. Просто появилась жаба, мейд ин майкрософт Ну а на счет перехода плюсистов... Это и не удивительно в ситуации, когда майкрософт позиционировала (и ведь до сих пор) шарп, как основной язык для разработки прикладного софта под винды. Революции, однако, не случилось.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[11]: Что вас останавливает от изучения нового языка?
От: Ziaw Россия  
Дата: 22.06.11 21:22
Оценка:
Здравствуйте, Undying, Вы писали:

U>Т.е. и выигрыша особого нет, и главное это все мелочи. Для кардинального упрощения решения типовых задач нужны законченные библиотеки, использующие иные (более простые и прозрачные) принципы по сравнению со стандартными дотнетовскими. А одного синтаксического сахара для смены языка мало.


Выигрыш есть, и ты его видишь прекрасно. Для написания, читабельности и навигации по коду пример на nemerle удобнее. Но это не важно.

Понимаешь, лямбду в С# тоже можно назвать сахаром. Класс, который компилятор под нее генерирует можно создать и самостоятельно. Только такой сахар дает огромный качественный скачок, никто не будет писать такие классы руками. Ибо ценность лямбды именно в коде по месту, а не засунутом в метод, пусть даже и в нескольких строчках от применения.

Те же продолжения тоже дают скачок, только не все его сейчас могут оценить. Как не все могли оценить то, что дадут лямбды до того, как попробовали их в деле. Тот же match дает немало.

Я прекрасно понимаю тех, кто кричит не нужен, не осилив банальные замыкания. Но удивляет то, что одни и те же люди могут кричать круто на появление expression tree в C# и скептически хмыкать, узнавая, что nemerle может разбирать вообще весь код как свой, так и C#, в очень удобную для анализа форму. Разобрать/проанализировать/собрать код легче легкого. А конструировать экспрешены для очень большого количества программистов до сих пор является офигенной магией от которой лучше держаться подальше. Хотя динамическая генерация цепочки "||" для линка сценарий совсем не экзотический.

А еще есть факт того что написание банального linq провайдера задача очень нетривиальная, и то, что тормозят они не по детски из-за чрезмерного количества абстракций, без которых код нереально поддерживать. Тот же nhibernate делает подход за подходом к его созданию и снова видно, что текущий код надо выкидывать и писать с нуля. Ибо тормоз даже по просторной мерке nhibernate. Но даже этот тормоз был бы использован, если бы не валился в самых неожиданных местах.

Nemerle позволяет писать код как удобнее, а генерить то что быстрее. Тот же linq провайдер на нем задача вполне подъемная.
Re[12]: Что вас останавливает от изучения нового языка?
От: IT Россия linq2db.com
Дата: 22.06.11 23:33
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Nemerle позволяет писать код как удобнее, а генерить то что быстрее. Тот же linq провайдер на нем задача вполне подъемная.


Для начала нужно хотя бы научиться заворачивать внешние иерархие классов вроде тех же Linq.Expressions в алгебраические типы. Без этого решение задачи Linq провайдера мало чем отличается от C#.
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 23.06.11 04:27
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Понимаешь, лямбду в С# тоже можно назвать сахаром.


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

Z>А еще есть факт того что написание банального linq провайдера задача очень нетривиальная, и то, что тормозят они не по детски из-за чрезмерного количества абстракций, без которых код нереально поддерживать. Тот же nhibernate делает подход за подходом к его созданию и снова видно, что текущий код надо выкидывать и писать с нуля. Ибо тормоз даже по просторной мерке nhibernate. Но даже этот тормоз был бы использован, если бы не валился в самых неожиданных местах.


Есть большое подозрение, что там сам подход кривой и никаким синтаксическим сахаром его не исправишь.
Re[10]: Что вас останавливает от изучения нового языка?
От: Undying Россия  
Дата: 23.06.11 04:38
Оценка:
Здравствуйте, hattab, Вы писали:

H>Следовательно и прорыва никакого небыло.


Так ни кому и не нужен сферический прорыв в вакууме. Прорыв должен быть по сравнению с языком, разработчиков которого планируется перетащить на новый язык. Гипотетический пример, на Nemerle пишется библиотека позволяющая создавать сайты в разы проще, чем на шарпе, то что эта библиотека не является принципиально новой по сравнению с библиотекой условно Ruby совершенно не важно, т.к. задача состоит в перетаскивании разработчиков с шарпа, а не с Ruby.
Re[13]: Что вас останавливает от изучения нового языка?
От: Ziaw Россия  
Дата: 23.06.11 05:16
Оценка:
Здравствуйте, Undying, Вы писали:

Z>>Понимаешь, лямбду в С# тоже можно назвать сахаром.


U>Речь о том, что пока возможности языка не используются стандартными библиотеками для большинства разработчиков они выглядят непонятными/неважными/ненужными. Например, те же лямбды появились в шарпе 2.0, но никакой поддержки в дотнет фрамеворке не получили (даже Func в библиотеке не было). Соответственно подавляющее большинство разработчиков возможности предоставляемые лямбдами не использовало. Вот когда поддержку лямбд добавили в фрамеворк (в виде линка в частности), тогда процесс пошел.


Ты что-то путаешь. Появились анонимные делегаты. И они использовались во фреймворке много где, возьми тот же List.FindAll или треды. Но это был несладкий сахар, вот => (именно этот синтаксис называется лямбдой) и вывод типов сделали его достаточно сладким и двинули в массы. Хотя конечно удобные тренировочные использования в виде линка дали о себе знать.

Z>>А еще есть факт того что написание банального linq провайдера задача очень нетривиальная, и то, что тормозят они не по детски из-за чрезмерного количества абстракций, без которых код нереально поддерживать. Тот же nhibernate делает подход за подходом к его созданию и снова видно, что текущий код надо выкидывать и писать с нуля. Ибо тормоз даже по просторной мерке nhibernate. Но даже этот тормоз был бы использован, если бы не валился в самых неожиданных местах.


U>Есть большое подозрение, что там сам подход кривой и никаким синтаксическим сахаром его не исправишь.


Яж тебе говорю, они сделали уже два подхода и оба кривые. Одной лишь кривизной рук объяснить это не получится, задача действительно сложна. Первый подход был по туториалу от парня из MS. Решение и работало как туториал. Дальше его развивать тупо не получалось, сплошные хардкоды частных случаев. Второй подход был с помощью промежуточного немаленького фреймворка, берущего кучу работы на себя. Имхо тоже на выброс, но может и дотянут, я давно не глядел.
Re[13]: Что вас останавливает от изучения нового языка?
От: Ziaw Россия  
Дата: 23.06.11 05:19
Оценка:
Здравствуйте, IT, Вы писали:

Z>>Nemerle позволяет писать код как удобнее, а генерить то что быстрее. Тот же linq провайдер на нем задача вполне подъемная.


IT>Для начала нужно хотя бы научиться заворачивать внешние иерархие классов вроде тех же Linq.Expressions в алгебраические типы. Без этого решение задачи Linq провайдера мало чем отличается от C#.


Имхо, вполне достаточно конвертера из/в PExpr из Nemerle.Linq. PExpr прекрасно конструируется и анализируется с помощью квазицитат.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.