Собственно возможно ли как то скомпилировать C# в нативный код под конкретную платформу?
Нет. Даже при использовании NGEN требуется наличие CLR.
Если же интересует C#-подобный язык, но с компиляцией в native код, можете попробовать D.
Duplex
> Собственно возможно ли как то скомпилировать C# в нативный код под конкретную платформу?
Я тебе по секрету скажу, он и так компилируется JIT-компилятором на целевой машине в нативный код.
> C# без .NET Framework
C# без .NET Framework, как женщина без сисек. Глупость, вобщем, не более.
Facepalm
> Если же интересует C#-подобный язык, но с компиляцией в native код, можете
> попробовать D.
<trollmode Но, в принципе, они оба не нужны.>
Facepalm
> Если же интересует C#-подобный язык, но с компиляцией в native код, можете
> попробовать D.
Vala, же.... правда костыля с рефлекшенами нету.
oistalker
> Vala, же.... правда костыля с рефлекшенами нету.
Фуууу, даже в Delphi он уже есть.
.NightmareZ.
> Фуууу, даже в Delphi он уже есть.
Один хрен не нужен,... а применение их в рабочем коде, - показывает узколобость и бездарность программиста.
oistalker
> Один хрен не нужен,... а применение их в рабочем коде, - показывает узколобость и бездарность программиста.
Узколобость и бездарность ты показываешь сейчас, утверждая такие вещи.
Duplex
Даже если бы и была такая фича, то в C# потерял бы некоторые языковые возможности.
Facepalm
> Если же интересует C#-подобный язык, но с компиляцией в native код, можете
> попробовать D.
Куда больше похож Vala.
.NightmareZ.
> C# без .NET Framework, как женщина без сисек. Глупость, вобщем, не более.
Наоборот, как сиськи без девушки :)
oistalker
> Vala, же.... правда костыля с рефлекшенами нету.
+1, но оно и не нужно.
то есть если хочется написать консольную утилитку на шарпе которая будет читать один файл, считать, потом выводить в другой, и все равно придется тянуть весь .Net?
Pushkoff
Ага. Куда ж без него. Как и для простой утилиты на яве придется всю ява-машину тащить.
фиговый какойто язык :D
вот можно былобы как то чтоб отдельные куски из .NET присабачивал только к exe и тогда можно б было без нее
Sbtrn. Devil
> <trollmode Но, в принципе, они оба не нужны.>
D плох хотя бы тем, что он никому не нужен. Если бы у него была хорошая поддержка и на него было завязаного много чего - другое дело.
oistalker
>> Фуууу, даже в Delphi он уже есть.
> Один хрен не нужен,... а применение их в рабочем коде, - показывает узколобость и бездарность программиста.
Очень много примеров можно привести, когда использование рефлекшена гораздо удобнее, чем иные способы.
Ну, например, я пишу редактор некоторой фигни. Это простое десктопное windows-приложение с главным окном, меню в нём, кнопочками под меню и рабочей областью. Как можно сформировать меню? Ну самый простой формошлёпский вариант - это тупо в IDE его мышекликаньем расставить, а в событии OnClick писать какой-то код (в самом быдлокодерском и формошлёпском варианте - бизнес-логику). И вот если мне вдруг нужно будет что-то поменять (например, перенести пункты меню из одной ветки меню в другую), мне прийдётся долго и усердно в IDE мудохаться с этим и бояться как бы что не поломалось. Если меню большое и разветвлённое, это настоящий ментальный анонизм, ибо жутко не наглядно. Ведь не будешь же спорить, что порою представить в текстовом виде информацию можно гораздо нагляднее, чем в виде кучи менюшек?
Я так и сделал. Описание всех пунктов меню (текст, изображение и т.д.) у меня находится в xml-файле. Но как связать пункт меню с кодом? В случае с рефлекшеном всё элементарно. У меня есть базовый класс, скажем AbstractEvent, имеющий абстрактный метод Do. От этого класса наследуются много-много других классов и этот метод определяют. В xml для каждого пункта меню я пишу имя класса (наследника AbstractEvent), к которому нужно привязаться. И при запуске приложения для каждого класса при помощи рефлекшена находится соответствующий класс, создаётся его экземпляр и на событие OnClick пункта меню привязывается вызов метода Do.
В случае, если рефлекшена нет и имена классов в рантайме недоступны, нужно в таком случае писать кодогенератор, который перед билдом проекта сгенерирует для этого самого проекта код, который будет содержать соответствия между названием класса и собственно самим классом в коде). Это куда менее удобно и гибко.
StimorolD3DX
> Даже если бы и была такая фича, то в C# потерял бы некоторые языковые возможности.
Я не сильно в курсе Delphi, потому что давно перешёл на .NET и на делфи не писал ничего более-менее серьёзного года четыре, если не больше, но вроде как в последней версии делфи есть хороший аналог рефлекшена и подобных фич, причём оно не требует наличия такого рантайма как у .NET
Хотя, с другой стороны, конечно, например, кодогенерацию, как у дотНета не сделаешь. Но во всяком случае, делфи в этом плане более мощное средство, чем С++.
Наверное, самый большой минус в отвязке от .NET - то, что будет потеряно огромное множество библиотек.
Pushkoff
> то есть если хочется написать консольную утилитку на шарпе которая будет читать один файл, считать, потом выводить в другой, и все равно придется тянуть весь .Net?
Тянуть не прийдётся. На всех современных операционных системах от мелкософта (Vista, Server, 7) есть дотНет искаропки.
Duplex
> фиговый какойто язык :D
> вот можно былобы как то чтоб отдельные куски из .NET присабачивал только к exe и тогда можно б было без нее
Тебя никто не заставляет его использовать. Можешь писать хоть на ассемблере, ибо это же супер язык: можно написать такую программу, которой даже операционная система не будет нужна. Вот оно счастье киберманьяка!
А тем временем мы выпустили бету третьей версии Artisteer'а под винду: http://www.artisteer.com/?p=news и есть бета под Mac. На C#.
Тема в архиве.