Если бы вдруг открылась запись в добровольцы на проект Nemerle2 или сокращенно "N", то кто бы подписался участвовать в нем?
Задачи:
1. Переосмыслить фичи Немерле. Оставить только те что не вызывают серьезных конфликтов с другими фичами языка или Интеграции.
2. Переписать компилятор Немерле с нуля учитывая требования накладываемые интеграцией, производительности компилятора, модульности, легкой поддержки и т.п.
3. Написать Интеграцию языка со студией.
4. При всем при этом не наделать ошибок сделанных поляками.
Проект, по моим рассчетам где-то на 4 человекогода (при фул-тайм разработке).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Задачи: VD>1. Переосмыслить фичи Немерле. Оставить только те что не вызывают серьезных конфликтов с другими фичами языка или Интеграции. VD>2. Переписать компилятор Немерле с нуля учитывая требования накладываемые интеграцией, производительности компилятора, модульности, легкой поддержки и т.п. VD>3. Написать Интеграцию языка со студией. VD>4. При всем при этом не наделать ошибок сделанных поляками.
Я бы с удовольствием поучавствовал бы в пунктах 1 и 2. Интеграция меня не особо интересует. Давно у меня зреет сумасшедшая идея, создать нечто вроде Nemerle light, облегченную версию, грубо говоря убрав все то, чего я все равно никогда не использую. Правда, опять же проблема со временем, которого никогда не хватает ни на что... Ближайшие пару месяцев я никак не смогу принять участие, возможно после я подтянусь. Но обязательно хотелось бы поучавствовать в таком проекте.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
offtopic rant follows:
Одного прошу, переименуйте его, а? Хотел попробовать его, но не могу я пользоваться ЯП с таким названием.
Может, так и назовете, N?
Здравствуйте, VladD2, Вы писали:
VD>Если бы вдруг открылась запись в добровольцы на проект Nemerle2 или сокращенно "N", то кто бы подписался участвовать в нем?
VD>Задачи: VD>1. Переосмыслить фичи Немерле. Оставить только те что не вызывают серьезных конфликтов с другими фичами языка или Интеграции. VD>2. Переписать компилятор Немерле с нуля учитывая требования накладываемые интеграцией, производительности компилятора, модульности, легкой поддержки и т.п. VD>3. Написать Интеграцию языка со студией. VD>4. При всем при этом не наделать ошибок сделанных поляками.
VD>Проект, по моим рассчетам где-то на 4 человекогода (при фул-тайм разработке).
Я бы поучаствовал, но а) не знаю Nemerle и б)фуллтайм для меня нереально
G>Я бы поучаствовал, но а) не знаю Nemerle и б)фуллтайм для меня нереально
Раз пошла такая пьянка, я тоже могу вписаться, с теми же оговорками, что и у gandjustas'а. Плюс ещё один момент, можно ли будет использовать свой кусочек проекта как тему дипломной работы? ;)
G>PS. Назовите язык N# ;)
Не катит, аллюзия с музыкальной нотацией пропадает (нет такой ноты N, тем более N#).
Здравствуйте, VladD2, Вы писали:
VD>1. Переосмыслить фичи Немерле. Оставить только те что не вызывают серьезных конфликтов с другими фичами языка или Интеграции. VD>2. Переписать компилятор Немерле с нуля учитывая требования накладываемые интеграцией, производительности компилятора, модульности, легкой поддержки и т.п. VD>3. Написать Интеграцию языка со студией. VD>4. При всем при этом не наделать ошибок сделанных поляками.
Если будет переписываться с нуля, то я бы подписался.
Здравствуйте, gandjustas, Вы писали: G>Я бы поучаствовал, но а) не знаю Nemerle и б)фуллтайм для меня нереально
Аналогично.
G>PS. Назовите язык N#
Так скоро алфавит закончится. В ход пойдут греческие буквы.
Текущая ситуация: авторы немерль дропнули и теперь его судьба зависит от RSDN?
А если еще и Влад дропнет? Кранты?
"4 человекогода при фул-тайм" это сколько при частичной? Если поделить на 1 человека, я столько не проживу.
Мне в немерле куча фич нафиг не нужны, а некоторые достают, так что идею поддерживаю, даже если отказаться от совместимости с немерлевыми библиотеками/макросами и придется рефакторить программы с каждой версией языка.
Только, имхо, ничего не сдвинется, пока Влад и Ко не разберут по косточкам текущий компилятор (идеально бы припахать поляков) и распишут что и как должен делать каждый кусок. Чтобы даже чернорабочий кодер вроде меня не плодил детских архитектурных ошибок, а взял в зубы ТЗ и не мог ничего завалить не нарушая его.
У меня крайне смутные представления о написании компиляторов, вам такие надо?
Bootstrap-самоцель? Т.е. будем писать в том, что наваяли, или пока на немерле? Хотелось бы второе.
То, что очень хочется, но нет в немерле.
1. public override ToString():string {x} на фоне {_+_} воспринимается как издевательство. Компилер мог бы выводить много чего, кроме типа переменных. Например при вызове fun1(enum1.v1) можно пропустить enum1. если тип параметра известен. И монстрячить лес классов на C# лишь немногим сложней немерля,надо упростить синтаксис
Пример: "| ИмяКласса" внутри класса Х -> "public class ИмяКласса : X" -> варианты — частный случай
2. 100% ковариантность обобщений в любых случаях. Компилер должен приводить тип к базовому как угодно, хоть через рефлексию, но не прикидываться шарпом. Лучше сразу ориентироваться только на CLR 4.
3. Добавление, переименование и замена свойств, конструкторов, вложенных классов, статических членов, переименование и сокрытие членов при наследовании, добавка интерфейсов (сейчас есть только расширения методов).
Пример: x=null; x.ToString() -> "null"
4. Прикрутить Parallel FX. Мне производительность до лампочки, а вот полное отсутствие потокобезопасности в CLR убивает.
Полный вишлист 10 страниц мелким шрифтом займет, заземлюсь.
Такое впечалнение, что забиваю гвозди микроскопом, пытаясь городить классы в функциональном языке. Когда маленькая замкнутая лямбда решает проблему.
Есть еще дикая идея: edit-time macros, т.е. код пользовательской сборки, который может выполнятся IDE (и доступны ее потроха и редактируемый проект)
Пример: класс может обьявить дизайнер самого себя (как дизайнер WinForm и т.п.) — навороченный редактор DSL с подсветкой синтаксиса, редактор графов для визуализации состояний, рендерилку кода как в Fortress или вообще заменить "стандартный редактор" для проекта. Рефакторинг (в стандартных IDE все не предусмотришь), редактирование БД вместе с биндингом, сборка инсталлятора и заливка на сервер. Или просто кастомный IntelliSense и отображение свернутых кусков кода.
И желательно, чтобы API макросов был абстрагирован от VS, т.е. содержал лишь "обобщенное окно редактора", "доступный для редактирования кусок кода" (типа #region Designer Generated) и т.п.
Конечно, написание и отладка редакторов еще сложней, чем макросов компилятора, но зато можно сделать "языково-ориентированный" и "визуальный" язык.
Насколько это сложно, в простейшем варианте?
Может стоит сообщить про "проект Nemerle2" англоязычным, вдруг кто еще откликнется?
Да, N# звучит куда приличней для конкурента F. Надо застолбить, пока алфавит не кончился, а то пропадет.
[]
K>Bootstrap-самоцель? Т.е. будем писать в том, что наваяли, или пока на немерле? Хотелось бы второе.
А что с ним не так?
K>То, что очень хочется, но нет в немерле. K>1. public override ToString():string {x} на фоне {_+_} воспринимается как издевательство. Компилер мог бы выводить много чего, кроме типа переменных. Например при вызове fun1(enum1.v1) можно пропустить enum1. если тип параметра известен. И монстрячить лес классов на C# лишь немногим сложней немерля,надо упростить синтаксис K>Пример: "| ИмяКласса" внутри класса Х -> "public class ИмяКласса : X" -> варианты — частный случай
Вот этого не надо, спасибо.
K>2. 100% ковариантность обобщений в любых случаях. Компилер должен приводить тип к базовому как угодно, хоть через рефлексию, но не прикидываться шарпом. Лучше сразу ориентироваться только на CLR 4. K>3. Добавление, переименование и замена свойств, конструкторов, вложенных классов, статических членов, переименование и сокрытие членов при наследовании, добавка интерфейсов (сейчас есть только расширения методов). K>Пример: x=null; x.ToString() -> "null"
Прости, может я не настолько продвинут, но можно все что выше еще раз, но по-русски?
K>Полный вишлист 10 страниц мелким шрифтом займет, заземлюсь.
гм. может тебе это, на другой язык уйти?
K>Такое впечалнение, что забиваю гвозди микроскопом, пытаясь городить классы в функциональном языке. Когда маленькая замкнутая лямбда решает проблему.
[]
А что тебе хочется выкинуть из языка? Мне пока только определенности с макрами не хватает.
K>>Bootstrap-самоцель? Т.е. будем писать в том, что наваяли, или пока на немерле? Хотелось бы второе. КЛ>А что с ним не так?
Просто, пока "оно" не станет лучше немерля нет смысла на него переходить. А когда оно сможет нормально скомпилить свои исходники (это ж компилер немерля, верно?) и нестрашно глючить, тогда полномасштабно перейти.
K>>Пример: "| ИмяКласса" внутри класса Х -> "public class ИмяКласса : X" -> варианты — частный случай КЛ>Вот этого не надо, спасибо.
Я ж для примера только, что надо глобально упростить синтаксис, а не добавлять локальные примочки.
КЛ>Прости, может я не настолько продвинут, но можно все что выше еще раз, но по-русски?
x[T] -> x[object] ковариантность (или это контра-? неважно) http://en.wikipedia.org/wiki/Extension_method
В C# 4.0 еще и свойства расширяемые. в Лиспе вроде все, что угодно.
КЛ>гм. может тебе это, на другой язык уйти?
Оный вишлист в других нереализуем
КЛ>А что тебе хочется выкинуть из языка? Мне пока только определенности с макрами не хватает.
Мне ничего не хочется выкинуть, а просто не нравится, как реализованы отдельные куски языка, особенно содранная с C# часть синтаксиса — целиком и полностью. Может из-за макросов так сделали, не знаю.
Здравствуйте, kitsunekko, Вы писали:
K>>>Bootstrap-самоцель? Т.е. будем писать в том, что наваяли, или пока на немерле? Хотелось бы второе. КЛ>>А что с ним не так?
K>Просто, пока "оно" не станет лучше немерля нет смысла на него переходить. А когда оно сможет нормально скомпилить свои исходники (это ж компилер немерля, верно?) и нестрашно глючить, тогда полномасштабно перейти.
Я не улавливаю мысль. Сейчас с бутстраппингом все нормально. Что с ним не так?
K>>>Пример: "| ИмяКласса" внутри класса Х -> "public class ИмяКласса : X" -> варианты — частный случай КЛ>>Вот этого не надо, спасибо.
K>Я ж для примера только, что надо глобально упростить синтаксис, а не добавлять локальные примочки.
Расшифруй, все равно не догоняю. Что не так с синтаксисом вариантов?
КЛ>>Прости, может я не настолько продвинут, но можно все что выше еще раз, но по-русски? K>x[T] -> x[object] ковариантность (или это контра-? неважно)
ну, это мелочи
КЛ>>гм. может тебе это, на другой язык уйти? K>Оный вишлист в других нереализуем
почему же?
КЛ>>А что тебе хочется выкинуть из языка? Мне пока только определенности с макрами не хватает.
K>Мне ничего не хочется выкинуть, а просто не нравится, как реализованы отдельные куски языка, особенно содранная с C# часть синтаксиса — целиком и полностью. Может из-за макросов так сделали, не знаю.
Здравствуйте, jartur, Вы писали:
J>offtopic rant follows: J>Одного прошу, переименуйте его, а? Хотел попробовать его, но не могу я пользоваться ЯП с таким названием. J>Может, так и назовете, N?
Согласен, я всегда чувствую неловкость пред коллегами, произнося название этого замечательного языка вслух.
Совсем дикая идея: может денег попросить? Грант какой-нибудь, или у государства — типа инновационный проект и все такое. Назвать язык Nano, например, лол. Проект-то стоящий, не про%бизнес какой-нибудь.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Здравствуйте, jartur, Вы писали:
J>>offtopic rant follows: J>>Одного прошу, переименуйте его, а? Хотел попробовать его, но не могу я пользоваться ЯП с таким названием. J>>Может, так и назовете, N?
KK>Согласен, я всегда чувствую неловкость пред коллегами, произнося название этого замечательного языка вслух.
А что с названием-то не так? Мне кажется абсолютно нормальным.
КЛ>Я не улавливаю мысль. Сейчас с бутстраппингом все нормально. Что с ним не так?
Т_Т
Ну что может быть "не так" с бутстрапом рабочего компилера?
Но вы же вроде НОВЫЙ копилер пишете! Того же языка (ну почти).
Если делать сразу бутстрап (т.е. повторять путь немерлистов), то нельзя использовать фичи языка, еще не реализованные (например нельзя использовать макросы в коде реализации макросов, они просто не скомпилятся, а потом опять по новой переписывать с макросами).
Вообще, мне казалось, что это очевидные ламерские рассуждения, а тут "не улавливаю мысль"
КЛ>Расшифруй, все равно не догоняю. Что не так с синтаксисом вариантов?
С ним все ОК, все идеально! Но я не могу использовать такой же синтаксис в произвольном классе (ну да, макрос пиши), только в вариантах.
КЛ>ну, это мелочи
На этих мелочах основан LINQ, и такие "мелочи" кумулятивно уменьшают код.
K>>Оный вишлист в других нереализуем КЛ>почему же?
Ты же его не видел. и набивать 10 страниц в лом.
КЛ>какая именно?
Ну например "нелегальное положение" отступов, изобильная скобчатость, необходимость специфицировать все на свете, кроме типов, и то не всегда (нет, я не любитель уток). Еще необходимость приводить тип при любых потенциальных потерях. Точнее, нет директивы "приводи все нафиг, я в своем уме". Жесткая структура файла (например, нельзя using System.Console внутри класса или метода, namespace без скобок). Дальше еще длинный список.