Есть ли будущее у С#? (без флуда)
Без этого всё тобой написанное - не более чем пустой пиздежъ.
Если ответ будет в таком же духе, то давай перейдем во флуд, или открой новый тред со своим заголовком.
А программы писать на нем удобнее. Эх, разорилась бы микрософт на полноценную платформу дотнет для никсов... Вот тогда будущее несомненно за шарпом.
1.9 unsafe
1.10 Атрибуты
1.11 foreach
1.12 не обязательно ловить все исключения
1.13 using ("полуавтоматические" переменные)
4. .NET поддерживает много языков, т.е. можно написать класс на одном языке и образовать от него потомка на другом. Исключения вызванные в одном языке нормально отловятся в другом.
.NET работает быстрее Java, но медленнее Native-кода.
нетовский код перед выполнением преобразуется в native JIT-компилятором (кстати, Java начиная кажется со 2-й версии это тоже умеет так что то что ты написал - полная лажа. Распространение в бинкоде выгоднее (в плане производительности) чем распространение в родном коде, но хуже чем распространение в исходниках
Не следует торопиться с выводами, т.к. преобразование тоже занимает немало времени.
ну это зависит от кода, насколько он медленно исполняется... Если прога пишет HelloWorld, то затраты на JIT весьма существенны, но они однократны (по крайней мере до перезагрузки). И еще, JIT не компиляет прогу целиком, а только если этот конкретный код понадобился для выполнения. Т.е. некоторые методы могут вообще никогда не компилироваться, если они не используются
Спасибо, за новый тред, старый действительно стало тяжело читать, сильно уклонились от темы.
Товарищ со своим фортраном, гзипом, бзипом и широчайшим кругозором всех победил
Но мне больше интересно сравнение с обычным плюсатым, так как на работе вопрос стоит переходить на С# или оставаться на С++ Билдере.
GC, properties, attributes, check bounds почти без ущерба скорости
Минусы:
нет templates (а те что делают, все равно будут беднее если грамотно прогать то C++ быстрее, managed C++ имеет почти все плюсы c# и c++
Билдер по любе медленнее.
м.б. Я просто такой фигней не пользуюсь. Да, c# компиляет в разы быстрее чем VC++, IC++ и GCC
Вот это уже достойный плюс.
Или что-то наподобие того, что должно было реализовано в опертоне?
(Может быть даже название языка не правильно вспомнил, но фишка в том, что вместо
байт кода хранится какое-то подобие синтаксического дерева, машинно-независимое. И при загрузке проводится
полноценная оптимизация, а не её JIT подобие)
имеется ввиду Oberon?
о, полюбому!
"NET-овских код", или MSIL - состоит из набора команд (см структуру OpCodes) - на самом деле очень схожих с ассемблерными
тогда большой скорости по сравнению с явой там быть не может?
Но этот код предварительно компилируется в нормальные машинные команды (о чем тут говорилось тысячу раз). Причем компилируется не вся программа, я даже смею уиверждать, что код из важнейших классов FCL загружается в память без компиляции (берется из кэща в готовом виде) - или я не прав ?
Мое мнение такое, у Microsoft-а есть деньги, и поэтому она может пригласить ведущих специалистов в этой области. А поскольку у нее хватило денег, чтобы начать такой масштабный проект, значит, появилась возможность учесть недостатки и C++, и Java и др. Почти всегда вещь, разработанная заново, оказывается лучше.
Мои оказались битыми.
---
...Я работаю...
www.msdn.microsoft.com найдешь
я сейчас без Инета сижу , на я просто взываю к здравому смыслу
а вот ты делаешь голословные утверждения
(вот много денег у микрософта, а всё же хенрю то и дело выпускают)
Не нарыл.
---
...Я работаю...
они могут себе позволить выпускать херню
всё равно будет спросом пользоваться
projects\book
---
...Я работаю антинаучным аферистом...
> вот много денег у микрософта, а всё же хенрю то и дело выпускаютВсё таки пользователи .Net не "домохозяйки", в отличии от пользователей Ofiice и Windows
они могут себе позволить выпускать херню
всё равно будет спросом пользоваться
И не всё от Microsoft-a хуйня, например, MS SQL Server очень приличный продукт
они могут себе позволить выпускать хернюПочему? В технологиях для Интернета MS отнюдь не лидер, и им нужно заваевывать рынок, поэтому твое утверждение не понятно.
всё равно будет спросом пользоваться
Потому что.
> В технологиях для Интернета MS отнюдь не лидер, и им нужно заваевывать рынок, поэтому твое утверждение не понятно.
Разные цели - разные методы.
Моё утверджение относилось именно к той области где херню съедят.
imho байт код и есть самый абстрактный ассемблер с ориентацией на стек
особенно во всяких гуях
зато писать и отлаживать код проще, да и выглядеть всё будет одинаково
Это ты мне написал? (тут два разных Шурика, разница в последних буквах)
ява уж слишком не блещет производительностью в гуях
тебе, наверное :-)
Но я ничего такого не писал.
Потому что там и контролы тоже написаны на самой Java-е. В .Net-е используются стандартные Window-ые контролы, которые заоптимизированны на полную катушку.
А вот шарп я так понимаю этого уже не дает
Хотя, с другой стороны уж этим как раз можно было пожертвовать ради скорости в гуе - это то, чем можно привлечь юзера (точнее, не оттолкнуть)
какой тогда высший смысл тогда в шарпе?
маза tcl/tk на гораздо большем числе платформ работает
ну и что?.. можно и на С++ писать мультиплатформенно (исходники будут 100% переносимы)... Вообще-то до-бемоль изобретался тоже как мультиплатформенный язык, допускающий легкий перенос с 32-битной платформы на 64-битную
или Qt
Но мне так никто и не объяснил в чем его реальные преимущества и зачем реально нужен байт-код, если это не мультиплатформенность
В общем все мутно очень. Я пришел к выводу, что мелкософт запудрил всем мозги, а люди прочидав книжки по шарпу продолжают пудрить мозги всем остальным, т.к. реальных преимуществ как не было так и нет
Кстати, насчет tcl/tk, тогда уж реальнее использовать Qt - это будет мультиплатформенность без потерь. Но тут неизбежна компиляция, да и с существованием Qt и tcl/tk под все платформы - проблема. А вот про JVM я слышал даже о версии под Plan9. А это говорит о многом - Java это действительно мультиплатформенный язык
По моему, MSIL нужен в первую очередь для независимости от языка, и только потом для реализации мультиплатформенности. Ну я думаю, что .NET ни когда не будет перенесен на 100 процентов на другую платформу. По моему .NET без Windows нет .NET !
Скажите, как работает JAVA если, если утверждается, что JVM - интерпретатор ?
Надеюсь так и далее будет продолжаться...
и там JIT, и там JIT
а насчет интерпретации, то версии Java 1.0 и Java 1.1 поддерживали только интерпретацию, JIT введена в версии 2.0
если непонятно слово "интерпретация", то пример тому языки Perl, Python, Javascript, ну или если тебе будет ближе, то Basic
В общем, наконец-то, я могу утверждать:
Никаких новшеств Некрософт в области bytecode по сравнению с Java не ввела !
я от кого-то слышал что байткод Java изначально разрабатывался как интерпретируемый язык, а IL -изначально как компилируемый, поэтому последний компилируется лучше (качественнее, быстрее)
Надеюсь так и далее будет продолжаться...
За одно это я уже готов убить. Это означает, что человек не понимает во всем этом ровным счетом ничего.
Только не обижайся, пожалуйста. Это мне как раз обидно.
Ну неужели тебе станет хуже от того, что люди будут использовать что-то еще кроме винды?
ответь мне
а насчет ворда, тут ты опять не прав. Лекции сам небось Теховские ботаешь?
А кроме Теха есть и другие форматы ведь. pdf, ps, html, различные форматы OpenOffice и StarOffice
OpenOffice.org, к примеру, ничем не хуже для написания курсовой чем M$ Office
Я, например многие вещи в vim'е в несколько раз быстрее чем в чем-либо еще набираю (это об удобстве)
Готов посоревноваться
А к моему диплому, я искренне верю, что Micro$oft сильно сдаст позиции. И ты, к примеру, уже будешь придерживаться совсем другого мнения
И это не голые слова
Но мы опять ушли от темы
Без обид
Возможно ты слышал о пресловутых 1.x версиях. Но эти версии очень разительно отличаются от 2.0
Собственно, если бы Java был тем чем он был до 2.0, то и революции он особой бы не свершил и поклонников не завоевал бы
Так бы и остался Oak'ом
IL - это ещё один ассемблер типа байт кода или нет
на сколько я понял, что принципиально IL от байт кода далеко не ушёл
Java изначально, по-моему, вообще разрабатывался как язык для холодильников
Со Starофисом знаком, Work мне ближе. С аналогами Exell & Work из Linux также немного поработал - ну не понравились они мне...;; но pdf для просмотра конечно лучше... Но это не важно. Важно то, что потребители технологий MS будут всегда существовать. Так было, так будет... Факт... Это почти как религиозный фанатизм... а Майкрософт почти как секта...
По поводу флуда - завтра утром создадим новый thread.
Ну я Вас пока покидаю, завтра экзамен, я еще ничего не открывал... Спокойной ночи...
Есть мультиплатформенность на уровне операционной системе, а есть мультиплатформенность на уровне процессора.
.Net в первую очередь сделан для того, чтобы была мультиплатформенность на уровне процессора.
ps
Или другими словами: .Net работает на любой платформе, но на которой установлен Windows.
если я на процессор PowerPC поставлю винду, то шарп на нем пойдет?
а если на x86 поставлю Линукс, то тоже пойдет
обратное тоже верно так выходит
да, пойдет.
> а если на x86 поставлю Линукс, то тоже пойдет
не пойдет
конечно, если поставить на Линукс Моно-вский framework, то пойдет, но опять же не в полном объеме.
мультиплатформенность на уровне процессора.
тогда о чем ты?
смысл?
Когда я говорил "на уровне процессора" я имел ввиду: мы получаем независимость от процессора.
Появилась реальная альтернатива Java-е и при этом более стандартизованная, и можно даже сказать более открытая и свободная.
и по-моему сейчас если писать под Windows, то надо на .Net-е, даже Borland теперь перешла на .Net
если про шарп еще можно так сказать, то про .Net уже нельзя так сказать.
у .Net-а есть более главное преимущество: .Net не зависит от языка, что дает намного большую гибкость
глупая и неудачная шутка сановцев
1. невозможность переопределять операторы - ваще сакс
2. да и названия классов, а-ля NoSuchAlgorithmException уже многое говорят
3. а про try\catch дак это вообще нереальная проблема - вынужденные try\cath для throw-функций иногда достают вконец
4. без дефайнов тоже весьма неприятно бывает (необходимость дефайнов как раз из-за долбонуто-длинных названий бывает)
5. ещё нельзя передавать простые типы (int) в функции по ссылке, приходится передавать класс
6. вывод дебужного сообщения - System.out.println(...) радует своей краткостью
и т.д.
//добавлено
7. Класс String имеет только одноразовое присваивание
единственная приятная вещь - это printStackTrace
про С# ничего не знаю, но не думаю, что они далеко от явы ушли
почти все недостатки java описанные вами тут также есть на C#/NET, а оставшиеся - уже испавлены в последней версии java
у меня 1.4.2 вроде бы
Я не знаю Что есть последняя версия java, так как ей не пользуюсь, единственное замечание - тут умные люди сказали про 3) - уже отлов исключений не обязателен. Многие проблемы (практически все )исправлены. Если не прав не бейте.
Да снова перечитал ваш пост, C# стал даже роднее
Абсолютно с Вами согласен. Конечно, для более низкоурвневых задач М$ пока слава Богу
разрешает использовать более подходящие средства. А с выходом Longhorn & Yukon этот вопрос вообще станет не актуальным. Например в Longhorne писанина с использованием Win32-API считается примерно уровня DOS. Даже к привычному сейчас WinForms надо обращатся через механизм напоминающий p/invoke (сейчас пока используется для работы с com & dll). Вы вообще в курсе как будет выглядеть программирование под Longhorn ? Это будет больше напоминать создание страниц на ASP.NET. Ну вот скажите, что это не рекламный трюк...
Кстати, если интересно, тут projects\book лежат 2 последних номера MSDN. Один полностью посвящен Longhorn, другой Yukon'у
Это будет больше напоминать создание страниц на ASP.NET
а сейчас не так?
Вы слышали про Avalon ?
Это будет больше напоминать создание страниц на ASP.NET
неужели все будет так же коряво и убого? (спрашиваю как программист на ASP с полугодовым стажем)
про это вроде не слыша, про то что в Лонгхорн будет понимать какие-то свои теги слышал
Вот будующий аналог WinForms (кнопка)
<Button FontSize="24pt">
<Text>
<Image Source="Calc.jpg"/>
<LineBreak/>
Calculate
</Text>
</Button>
не дай Бог такое приснится
ужас какой-то
это у тебя такая винда или это вас всех ждет в длинном и толстом горне?
Меня вот, что интересует. Как скажется на программировании то, что интерфейсная часть будет храниться в виде XML?
а где же координаты в пикселах?
Но вот про Windows.Forms вероятно следует забыть. На смену им придет пространство имен MSAvalon.Windows;
<def:Code>
<![CDATA[
void ButtonClick(object el, ClickEventArgs cea)
{
Button btn = (Button) el;
FlowPanel parent = (FlowPanel) btn.Parent;
parent.Children.Remove(btn);
parent.Children.Insert(1, btn);
}
]]>
</def:Code>
Не, честно говоря я и сам на это смотреть без смеха не могу...
В CDATA это все засунуть - это сильно
По поводу координат ? Вы часто используете их в HTML ? А как часто юзаете CSC ? Так вот, в longhorne будет CSC-подобное... но на XML !
это чё бедный программер будет созерцать эти ужасные уговые скобочки?
какая винда - по старинке w2k. Но уже заставляют переходить на longhorn... прямо так и пинают...
CSS ?
Знаете, а у нас в уродских других ОС.... так вот... представляете... там XML используется там, где он нужен, а не наоборот
А откуда возьмутся визуальные рисовалки формочек, которые будут обходиться без координат?
таблица стилей - очепятка
да есть там конечно координаты
Иначе в нём бы не было "++" и "--", определённых из-за используемой машины.
---
...Я работаю антинаучным аферистом...
В хорошем пользовательском интерфейсе - очень мало координат (почти совсем нет и много Layouter-ов.
поясни... при чем тут ++ ?
---
...Я работаю антинаучным аферистом...
у проца обязательно должна быть инструкция INC - не факт, без нее можно обойтись
"++" связана с PDP-11 очень просто:
MOV R0R5)+
MOV -(R5R0
Обрати внимание, что ни один _переносимый_ язык, то есть, не опиравшийся на низкоуровневое представление, не имеет подобных извратов.
---
...Я работаю антинаучным аферистом...
int a=1;
00579644 C7 45 E8 01 00 00 00 mov dword ptr [a],1
a++;
0057964B 8B 45 E8 mov eax,dword ptr [a]
0057964E 83 C0 01 add eax,1
00579651 89 45 E8 mov dword ptr [a],eax
хотя я бы написал
inc dword ptr [a]
ну да ладно. Какие могут быть проблемы с переносимостью автоинкремента - хоть убей не понимаю. Значит, операция сложения - переносима, а инкремент - нет?
"До-бемоль" изобретался как одноплатформенный, платформа --- PDP-11.
> допускающий легкий перенос с 32-битной платформы на 64-битную
Мало того --- 16-разрядная.
---
...Я работаю антинаучным аферистом...
для чего язык B делали - это я не знаю, и то что операция ++ не переносима - меня никто не убедит
В России, B --- это си-бемоль, си --- это H.
---
...Я работаю антинаучным аферистом...
Оставить комментарий
6yrop
Предыдущий тред сильно зафлужен, поэтому я решил начать новый. Большая просьба ко всем, писать здесь только по теме, при необходимости открывать новые треды.По теме.
1. Вот какие приятные “мелочи” я могу сходу вспомнить, которые есть в C# и нет в Java
1.1 Параметры в функцию могут передаваться и по ссылке и по значению, поддержка out параметров.
1.2 У классов есть свойства.
1.3 Индексаторы и перегрузка операторов.
1.4 Кроме классов есть структуры struct (value-type).
1.5 boxing, unboxing
1.6 Скоро в C# появятся Generic-ы, это типа шаблонов в C++ (ну вроде в Java их тоже обещают).
далее точно не могу сказать
1.7 В Java-е есть Reflection?
1.8 Есть ли в Java-е специальные конструкции языка для событий?
2. В ближайшем будущем все продукты Microsoft-та будут ориентированны на .Net, т.е. в них будет встроена поддержка .Net. Например, в следующую версию MS SQL Server будет встроен CLR, т.е. (насколько я понимаю) хранимые процедуры можно будет писать на .Net языках.
3. .Net работает быстрее Java.