C#

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а): Marmot, правильно ли будет сказать:

1) с пользой для всего сообщества вполне можно было бы ограничится ветвью Java?
Это религиозный вопрос ;-), IMHO наличие двух похожих технологий стимулирует конкуренцию и как результат развитие.
vg писал(а):
2) C# - для разработки, главным образом приложений веб. Я пару дней почитал доку по C#, попрограммировал всяческие sample, почитал для начинающих. Ну хоть убей, не вижу ничего такого, из-за чего там можно было огород городить, вкладывать огромные бабки в разработку нового языка. Всёж кажется мне, что вполне достаточно С++ и VB для разделения труда.
Вопрос не в языке, а в runtime environment, нормальный C++ не может быть использован в VM, поэтом MS сделали кастрированную версию.
C# и VB.Net сейчас обладают практически идентичной функциональностью, разница только в синтаксисе.
Использование VM позволяет упростить жизнь application develpera, освоводив его от забот по управлению памятью и сделав практически невозможным вляпаться в buffer overflow.
T.e. игра стоит свеч, C# позволяет привлечь кучу народа сейчас пишущего на C++.
Кроме того VM позволяет запускать программы на новых процессорах(используя их по максимому) без перекомпиляции (например IA-32/IA-64/ARM etc.)
Использование C++ для написания Windows apps (GUI and server side) будет уменьшаться, потому что так хочет MS и потому что это логично ;-)
vg писал(а):

Если в части C#, то есть там работа с указателями и практически такая же комфортная как в C/C++. На уровне синтаксических конструкий разименовывания и получения результата по ссылке - всё тоже самое, что и в C. Единственное, что нужно сделать - использовать модификатор unsafe и соответствующие ключи для компилляции. В части библиотек для работы с памятью - пока не копал.
Блин, ну зачем вам надо управлять памятью, это нужно только в особых типах applications (embedded, OS, drivers etc.)???
VM сделает за вас всё, может не так эффективно, но время разработчика сейчас намного дороже чем CPU tiks.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Marmot,

Код: Выделить всё

Вопрос не в языке, а в runtime environment, нормальный C++ не может быть использован в VM, поэтом MS сделали кастрированную версию. 
.NET позволяет "изготавливать" как managed, так и unmanaged приложения на C++. И в этом смысле приложения, созданные в C++, ничем не уступают приложениям, созданным в C#. Впрочем, даже обычное unmanaged мфц приложение может быть "переведено в разряд managed" при помощи соответствующих ключей компилляции.
Использование VM позволяет упростить жизнь application develpera, освоводив его от забот по управлению памятью и сделав практически невозможным вляпаться в buffer overflow.
Ну, просто так не получится "не вляпаться в buffer overflow". Там нет такой автоматической палочки-выручалочки. По крайней мере необхдимо использовать ключевое слово checked. Ну не думаешь же ты, что программер будет тыкать ЭТО везде в коде. Ну и если честно, хоть убей, не могу вспомнить ни одной ситуации (не при отладке, конечно, там всякое бывает), когда бы невозможно было определиться с размером выделяемой памяти.
Блин, ну зачем вам надо управлять памятью, это нужно только в особых типах applications (embedded, OS, drivers etc.)???
Мармот, ну а как тогда вообще писать программы, если не пользоваться указателями. Более того, всё гораздо хуже, например, в Delphi, когда без указателей приходится использовать натурально извращённые методы программирования, для решения простейших задач (если на форуме есть дельфийцы, прошу не сердится, т.к. я сам всегда защищаю дельфи в тех областях, где сие богатство необходимо).
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

2vg

Я уже 8 лет пишу на Java, из них 4 года исключительно на Java.
В Java нет указателей, совсем, нету и всё :-) и нету unsafe кода, и все массивы "checked" !
Сегодня такие компании как IBM, Oracle, BEA делают на продуктах написанных на Java миллиарды!
На Java программируют больше миллиона девелоперов.
MS идёт той же дорогой, просто они пытаются подсластить пилюлю таким как ты C++ программистам :-)
В типичных applications того, что делает хороший сборщик мусора вполне достаточно.
Ты не представляешь, как это круто, избавится от геморроя с распределением памяти.
Для того, что бы убедить тебя, что я не лох от программирования :-), вот здесь http://www.velare.com/product/atctoverview.htm можно прочитать о том чем я занимаюсь (ну хочется мне похвастаться :-) ).

Задавай вопросы, если они у тебя есть, я хочу тебя обратить в свою "веру", ты не ленив как многие тут, и имешь желание понять новые вещи :-)
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Marmot писал(а):Использование VM позволяет упростить жизнь application develpera, освоводив его от забот по управлению памятью и сделав практически невозможным вляпаться в buffer overflow.
я конечно понимаю что мы все понимаем о чем речь, но чиста с педантской точки зрения наличие VM на buffer overflow никак не влияет. корректнее рисуемся, тов Мармот :)
Marmot писал(а):Блин, ну зачем вам надо управлять памятью, это нужно только в особых типах applications (embedded, OS, drivers etc.)???
VM сделает за вас всё, может не так эффективно, но время разработчика сейчас намного дороже чем CPU tiks.


я бы все же сказал по-другому - позволить не управлять памятью можно только в особых типах applications. при этом ни java, ни c# для этого естественно не нужны :-p
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

drain bamage писал(а):
Marmot писал(а):Использование VM позволяет упростить жизнь application develpera, освоводив его от забот по управлению памятью и сделав практически невозможным вляпаться в buffer overflow.
я конечно понимаю что мы все понимаем о чем речь, но чиста с педантской точки зрения наличие VM на buffer overflow никак не влияет. корректнее рисуемся, тов Мармот :)
Ок, я действительно был неточен, я имел ввиду buffer overflows позволяющие code injection :-) worst case scenario так сказать.
В Java если ты выскочил за пределы массива просто выскочит exception и всё :-)
Более того, VM позволяет, используя adaptive compilation, иметь одновременно быстрый и корректный доступ к памяти ( http://wwws.sun.com/software/solaris/java/wp-hotspot/ )
Понятно, что можно поставить проверок везде и всюду и в pure C code.
Просто в случае VM это делается более логично.


drain bamage писал(а):
Marmot писал(а):Блин, ну зачем вам надо управлять памятью, это нужно только в особых типах applications (embedded, OS, drivers etc.)???
VM сделает за вас всё, может не так эффективно, но время разработчика сейчас намного дороже чем CPU tiks.


я бы все же сказал по-другому - позволить не управлять памятью можно только в особых типах applications. при этом ни java, ни c# для этого естественно не нужны :-p
Можно сказать и так :-)
Только если сравнить количество денег потраченное на эти два типа appliacations, то я могу гарантировать что на разработку программ где ручная сборка мусора не нужна тратится раз в 30-50 больше.

BTW, как я уже писал весь вопрос в runtime environment, язык может быть любой...
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg писал(а):Спасибо за мнение знакомого, хотя интересно узнать и твоё мнение.
Лучше C++ не бывает. Всё остальное - суррогатина какая-то, как пробовать бормотушку после марочного коньяка. Есть конечно любители... Или когда денег мало. Это можно понять. :twisted: :oops:

Год назад колебался, а сейчас мне бы не хотелось ничего писать под .Net вообще и на C# в частности. Может быть только веб-сервисы. Когда на машине запускают виртуальную машину, не потому что лучше работает, а потому, что человек пишет под виртуальную машину (.Net), мне это не кажется естественным. Эта самая виртуальная машина в которой работают приложения .Net в принципе не даёт ничего, что мне, как программисту надо. Безопасность кода и решение проблем с выделением памяти тоже не представляются очень важными приоритетами, есть техники и библиотеки в C++, которые их разрешают. Переносимость бинарного кода тут тоже не является фактором номер 1.

То что ты написал о возможности прямого доступа к памяти - это же просто какая-то лазейка, подрыв стройной концепции. Уж лучше по честному - в машине внутри машины, ну и сидите там. А мне как-то больше нравится самому рулём крутить и на газ-тормоз нажимать, нежели чтобы за меня всё это делала ещё одна машина. :D

P.S. про что проще - C# или VB - говорить не очень интересно. То было эмоциональное высказывание, не моё, и скорее про .Net в целом. C# богаче, но на VB не так то просто реализовать вещи, что просто уже реализованы в самом .Net и которые надо просто задействовать.

P.P.S. У Java есть своя ниша. Зачем туда лезет .Net, Microsoft конечно лучше знать. Но об этом я не писал.
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

Woozy писал(а): Лучше C++ не бывает.
Ну о вкусах не спорят :-)
Woozy писал(а): Есть конечно любители... Или когда денег мало. Это можно понять. :twisted: :oops:
Ага, мне вот всё мало, хочется больше, вот и приходится программировать на Java... :-)
Woozy писал(а): Переносимость бинарного кода тут не является фактором номер 1.
Кому как, я вот пишу и тестирую всё на лаптопе с Windows, а потом это всё запускается на SUN E10000, без перекомпиляции...
Кто бы мне там дал играться, пиши я на С++ (эх, а было ж время... )
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

Marmot писал(а):
Woozy писал(а): Переносимость бинарного кода тут не является фактором номер 1.
Кому как, я вот пишу и тестирую всё на лаптопе с Windows, а потом это всё запускается на SUN E10000, без перекомпиляции...
Кто бы мне там дал играться, пиши я на С++ (эх, а было ж время... )
Я позже P.P.S. приписал. Опоздал. :lol:
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Marmot писал(а):
Woozy писал(а): Переносимость бинарного кода тут не является фактором номер 1.
Кому как, я вот пишу и тестирую всё на лаптопе с Windows, а потом это всё запускается на SUN E10000, без перекомпиляции...
ну и ... ? элементарный thin platform layer под C/C++ позволяет писать код полностью переносимый в сорцах куда угодно. "играться" на e10000 не требуется, все что нужно - нарисовать под него platform glue. а таскать за собой vm только для того, чтобы "запускать без перекомпиляции" - это overkill. так что woozy got a point
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

:shock: :shock: :shock:
Нифига себе я спросил про C#.

И шо всё это надо знать, для того что бы работать в Канаде?
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а)::shock: :shock: :shock:
Нифига себе я спросил про C#.

И шо всё это надо знать, для того что бы работать в Канаде?
Знание всёго этого и кучи всего остального позволяет чуствовать себя здесь комфортно в любой экономической ситуации.
Аватара пользователя
Marmot
Графоман
Сообщения: 39274
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

drain bamage писал(а): ну и ... ? элементарный thin platform layer под C/C++ позволяет писать код полностью переносимый в сорцах куда угодно. "играться" на e10000 не требуется, все что нужно - нарисовать под него platform glue. а таскать за собой vm только для того, чтобы "запускать без перекомпиляции" - это overkill. так что woozy got a point
Надо бы нам с тобой в реале встретится и поговорить по-мужски. :twisted:
Люблю спорить с умными и убеждёнными людьми. :evil:

В любом случае будущее нас рассудит... :lol:
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

Marmot писал(а): Кому как, я вот пишу и тестирую всё на лаптопе с Windows, а потом это всё запускается на SUN E10000, без перекомпиляции...
Кто бы мне там дал играться, пиши я на С++ (эх, а было ж время... )
try Borland XBuilder

Программирование в одной среде на С++ под Solaris, Linux Red Hat, Windows, Symbian OS

ну а компиляция даже многомегобайтных проектов на P4 составляет считанные минуты.
Marmot писал(а): В Java нет указателей, совсем, нету и всё и нету unsafe кода, и все массивы "checked" !
Сегодня такие компании как IBM, Oracle, BEA делают на продуктах написанных на Java миллиарды!
На Java программируют больше миллиона девелоперов
будь реалистом. зайди в магазин и найди на полке хоть одно приложение, написаноое на Java, VB и на чем-то еще. Все на C++
Oracle написан на С++ и живет на 28 платформах

Marmot писал(а): Ты не представляешь, как это круто, избавится от геморроя с распределением памяти.
ты не поверишь, но использование STL в 99% случаев позволяет обходится без заботы о распределении памяти.
У меня в коде не больше 2-3 delete на тыщу строк кода.

Templates - вот что потерял C# и неудивительно, глядя на автора.
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

Lepsik писал(а):
Marmot писал(а): Кому как, я вот пишу и тестирую всё на лаптопе с Windows, а потом это всё запускается на SUN E10000, без перекомпиляции...
Кто бы мне там дал играться, пиши я на С++ (эх, а было ж время... )
try Borland XBuilder

Программирование в одной среде на С++ под Solaris, Linux Red Hat, Windows, Symbian OS

ну а компиляция даже многомегобайтных проектов на P4 составляет считанные минуты.
Marmot писал(а): В Java нет указателей, совсем, нету и всё и нету unsafe кода, и все массивы "checked" !
Сегодня такие компании как IBM, Oracle, BEA делают на продуктах написанных на Java миллиарды!
На Java программируют больше миллиона девелоперов
будь реалистом. зайди в магазин и найди на полке хоть одно приложение, написаноое на Java, VB и на чем-то еще. Все на C++
Oracle написан на С++ и живет на 28 платформах

Marmot писал(а): Ты не представляешь, как это круто, избавится от геморроя с распределением памяти.
Эту легенду придумали java :lol: программеры. Сами сишники с этим проблем не имеют.
ты не поверишь, но использование STL в 99% случаев позволяет обходится без заботы о распределении памяти.
У меня в коде не больше 2-3 delete на тыщу строк кода.

Templates - вот что потерял C# и неудивительно, глядя на автора.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

Lepsik писал(а):будь реалистом. зайди в магазин и найди на полке хоть одно приложение, написаноое на Java, VB и на чем-то еще. Все на C++
ты о чем? ты никогда не видел софта писанного на ВБ и Яве? магазинного софта заметь. :)
Ответить