LINUX.ORG.RU
ФорумTalks

[Си-срач] C++ и C#


0

0

Сегодян в универе была лекция по C#. И меня очень напрягли такие записи в конспекте как "JIT - интелектуальный компилятор", "C# обеспечивает высокую производительность, высокую безопасность по этому является идеальным языком для разработки N-уровневых распределённых WEB-приложений", "причины возникновения C#: 1) Изначальная ориентация на .NET...", "Преимущества С#: 1)Нет прямой манипуляции памятью..."

Как этот бред можно понять ? Чем C# так круче С++ ?

Довольно стандартный маркетоидный бред. Если забыть про байткод и jit, то C# конечно не может быть круче C++ впринципе. А если делать упор на jit и байткод, то наверное имеет смысл подумать о jvm вообще:)
К сожалению сейчас много где учат не понимать, разбираться и выбирать оптимальное решение, а изучать конкретную технологию, восхвалять её, зомбировать других, использовать только её и тд. Чем-то это походит на тоталитарные секты&&наркомания.
Разумеется потом уже мало кто понимает, или точнее хочет понимать что и в C++ можно работать практически не руля памятью вручную, и что jit с баткодом интересен редко, разве что для динамической кодогенерации и переносимости(которую можно и другими средствами обеспечить).

ixrws ★★★
()

>Чем C# так круче С++?

Множественного наследования нет, GC есть, как раз самое оно индусам массово клевать ентерпрайс буллшит.

yoghurt ★★★★★
()

> JIT - интелектуальный компилятор

ЩИТО?

> C# обеспечивает высокую производительность, высокую безопасность по этому является идеальным языком для разработки N-уровневых распределённых WEB-приложений

Отчасти согласен, но ведёт со собой vendor lock-in, ибо ждать от Mono вменяемого asp.net ещё долго.

> причины возникновения C#: 1) Изначальная ориентация на .NET...

Что появилось раньше, .net или c# и как они между собой связаны ещё надо подумать.

> Преимущества С#: 1)Нет прямой манипуляции памятью...

Если переписать фразу как «нет необходимости прямого доступа к памяти», то сойдёт. По той же самой причине кодю скриптики на питоне, а не на C (:

PolarFox ★★★★★
()
Ответ на: комментарий от yoghurt

> Множественного наследования нет, GC есть, как раз самое оно индусам массово клевать ентерпрайс буллшит.

А в GC так же тормозит или как?

Zodd ★★★★★
()
Ответ на: комментарий от PolarFox

> Что появилось раньше, .net или c# и как они между собой связаны ещё надо подумать.

Андерс Хейлсберг — первый мигелюшко, которому захотелось "своей" Явы.

iZEN ★★★★★
()
Ответ на: комментарий от unrealix

А что вы ожидали, сравнение по пунктикам? Давайте сейчас начнём подробно сравнивать агитки от ms прочих контор на предмет совпадения с реальностью. Вам времени не жаль на это? Что здесь нужно объяснить? Что jit принципиально не может генерировать более хороший код нежели компилятор обычный? Что здесь всё зависит от реализации? Это нужно объяснять? Нужно объяснять что при том и другом методе компиляции? Разница лиш во входных данных, а всё остальное более-менее также. Тоже и про байткод, хоть и переносим, но требует vm для его преобразования, а значит это ничем принципиально не гибче чем Qt и принцип сборок для каждой платформы. Если конечно вы не считаете за труд сбору. В общем по всем пунктам там слив.

ixrws ★★★
()
Ответ на: комментарий от melkor217

>> Множественного наследования нет

>Это так важно.

Ну, это довольно занятный инструмент. В умелых руках им можно поиметь профит, в неумелых - отстрелить себе что нибудь

yoghurt ★★★★★
()

> "Преимущества С#: 1)Нет прямой манипуляции памятью..."

Ключевое слово для поиска: "вирус на C#"

> Чем C# так круче С++ ?

Говна меньше, не?

iZEN ★★★★★
()

> Как этот бред можно понять ?

Это просто. "Лекция", которую вам читали - это рекламный материал MS.

tailgunner ★★★★★
()
Ответ на: комментарий от ixrws

Прошу прощения за ошибки, запостил не проверив:(

ixrws ★★★
()
Ответ на: комментарий от iZEN

>Андерс Хейлсберг — первый мигелюшко, которому захотелось "своей" Явы.

Его и Скота Вильтамутта нам тоже указали, жаль адресок не дали для визита :)

unrealix
() автор топика

>JIT - интелектуальный компилятор

JIT обозначает лишь Just-In-Time и ничего более

>высокую производительность

С еще одним звеном между годом и железом?

>является идеальным языком

Идеальных языков^W вещей не бывает

>Нет прямой манипуляции памятью

Как это так нет? А это что?

http://www.google.com/search?client=opera&rls=ru&q=c%23+unsafe&so...

Uter
()
Ответ на: комментарий от unrealix

>Тебя никто не заставляет управлять памятью в С

лолшто? Как мне перемножить на С две матрицы, не управляя памятью вручную? Размер матриц и сами они задаются, скажем, файлами.

yoghurt ★★★★★
()
Ответ на: комментарий от unrealix

Даже если избавиться от malloc и free, и перейти допустим на принцип подсчёта ссылок, то всё равно параметры в функции вы будете передавать в качестве указателей во множестве мест. Это конечно уменьшает количество ошибок до минимума, но ничто не мешает вам написать somemethod((someobject*)0x00000001). В этом смысле С# даёт контроль на уровне компилятора, ну и потом уже на уровне байткода.

ixrws ★★★
()
Ответ на: комментарий от yoghurt

>скажем, файлами.

А оно сильно напрягает ? :) Вообще я не чётко выразился и намекнул я на использование malloc(), free()

unrealix
() автор топика
Ответ на: комментарий от ixrws

>В этом смысле С# даёт контроль на уровне компилятора, ну и потом уже на уровне байткода.

C# этим круче ?

unrealix
() автор топика
Ответ на: комментарий от unrealix

> ты с ASM его не путаешь ? Тебя никто не заставляет управлять памятью в С

С(++) это такой язык. В память вроде лезть и не обязательно, но иногда удобно. И иногда из-за этого возникают баги. Иногда их трудно ловить.

PolarFox ★★★★★
()

и чего? Тебе до сих пор не понятно, что C# - язык более высокого уровня, чем C++? Как их вообще можно сравнивать?

Joe_Bishop
()
Ответ на: комментарий от PolarFox

>С(++) это такой язык.

К.О. подрабатываешь ? :)

> память вроде лезть и не обязательно, но иногда удобно.

оно самое

>Иногда их трудно ловить.

тоже правда, но всё зависит от писаки

unrealix
() автор топика
Ответ на: комментарий от unrealix

Ну здесь главный вопрос не "круче?", а "что нужно разработчику?". Мне это просто не нужно. Но если кому-то нужно, то пусть используют. В том-то вся и беда, что прихотят "мегокрутые" маркетологи и указывают другим что круче, а что нет. На самом же деле - это не круче, а по другому. Впрочемб в C# есть, как уже выше писали, unsafe, хоть это и неприветствуется.

ixrws ★★★
()
Ответ на: комментарий от Joe_Bishop

Спорно, можно делать и бинарники готовые, да и с указателями можно работать. Тут скорее не более высокий уровень, а загон языка в чётко очерченные рамки и задачи. Не давать прямой доступ к памяти, а давать косвенный - чем же здесь высокий уровень? Это всего лиш контролируемый доступ. На практике jit может в итоге один и тот же код сгенерировать для C#, в сравнении с обычным компиллером и С++.

ixrws ★★★
()
Ответ на: комментарий от ixrws

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

будь добр, набросай аналог LINQ на C++.

Joe_Bishop
()
Ответ на: комментарий от unrealix

Потому что хоть и пишу на С, но стараюсь избегать уж сильно грубых извращений с указателями. Да вообще любой, кто пишет более-менее переносимый код старается избегать сомнительной арифметики указателей, и прочего. А если и есть вопрос отлова выделения и освобождения ресурсов(а это не только malloc, это и файлы, сокеты, разделяемая память и всё подряд), то стараюсь это по максимум логировать и наблюдать. Не скажу что это обременяет, делается уже на полуавтомате.
Кроме того тут и есть и другие мотивы, как то: смена аллокеров на уровне замены хедеров, наблюдение за работой с ресурсами приложения в реальном времени, и последующая оптимизация.
В общем нет надобности, если уж использовать что-то иное, более "высокоуровневое", то пожалуй python или perl6(который интересен больше, но он ещё сыр).

ixrws ★★★
()

>Как этот бред можно понять ? Чем C# так круче С++ ?

Круче - ничем. Удобнее тем самым автоматическим управлением памятью, run-time байткодогенерацией ([n]hibernate например), охренительным апишником до которого пока мало кто дотягиевает, кроссплатформенностью (хотя тут конечно жаба сильно круче).

Nagwal ★★★★
()

А вам дают "Историю Microsoft. Краткий курс"? Нет еще? Не боись, через пару лет будешь и это сдавать

Karapuz ★★★★★
()
Ответ на: комментарий от yoghurt

А вообще, прятать от _программиста_ некоторые вещи, считая их опасными, не этично. Если хотели бы создать простой язык, то у них получился бы Scheme.

melkor217 ★★★★★
()

А вообще лекция содрана отсюда http://www.gotdotnet.ru/LearnDotNet/NETFramework/651.aspx

"Перечислим особенности нового языка:
- автоматическая уборка мусора
- возможность манипулировать указателями и иметь непосредственный доступ к памяти
- поддержка свойств и событий (аналогично VB)
- поддержка атрибутов
- встроенная поддержка основных типов (строка, массив, ...)
- множественное наследование возможно только от интерфейсов (как в Java)
- поддержка С API, Windows API и COM+ на уровне языка
- поддержка assembly
- контроль типов
- автоматическая инициализация переменных"

Karapuz ★★★★★
()
Ответ на: комментарий от Joe_Bishop

Наглое 4.2. До диез язык не более высокого уровня чем Си (и си++). Это языки одного и того же уровня. Разница в том, что у до диез (формально) автоматическое управление памятью, а у си(си++) - нет.

AndreyKl ★★★★★
()

Зомбированные майкрософтом студиозы на лоре, только думал что школоты нет, так тут старшая замена подтянулась.

wfrr ★★☆
()
Ответ на: комментарий от AndreyKl

пыщь, все это ЯВУ, разница лишь в скорости разработки и пороге вхождения.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>Зомбированные майкрософтом студиозы на лор

Где ? Если бы я был зомбированным начинал бы я эту тему ?

unrealix
() автор топика
Ответ на: комментарий от unrealix

Моно - пошлая пародия на жалкое подобие кривого поделия.

wfrr ★★☆
()

А важна ли крутизна? Мне например, больше всего нравится С99.

С++ хотя и дает высокоуровневые инструменты, но он создает иллюзию, что все просто. Вот тут как раз выше сказали, что на С++ можно программировать «не руля» памятью в ручную. Некоторые люди при этом теряют из виду опасность выстрелить себе в ногу! А С++ как раз таки это позволяет!

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

Есть еще интересный язык Vala - синтаксис похож на С#, а преобразуется в код С и затем в обычный машинный код.

hibou ★★★★★
()

это в ХНТУ или педыне такое? что-то подсказывает, что в педыне - там давно уже оплот .NET-ев :)

насчет "Чем C# так круче С++" - на C# не пишу и не буду, потому не эксперт в нем, но для тех кому не надо выжимать 100% из производительности и обеспечивать кроссплатформенность - он вероятно лучше, т.к. при его создании опирались уже на длительный опыт С++, Java и других языков, которые были обкатаны годами

lester ★★★★
()
Ответ на: комментарий от lester

В C# так много синтаксического сахара что уже слипается в жопе, я раньше на нем писал но с C# 2 перелез на жаву. При виде того что напихали в нынешний сишарп жопа слипается инстинктивно, там столько конструкций ключевых слов и прочей дряни что C++ после этого кажется раем.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

угу - решил почитать про С#, примеры вроде:

private sealed class SingletonCreator<S> where S : class, new()
{
private static readonly S instance = new S();
...

приводят в ужас :)

lester ★★★★
()

А мне против своей воли приходится работать с C#. Ужос в перьях, одним словом.

я привык работать с указателями и с памятью вытворять всякие кренделя на С++. а приходилось делать такие вещи на C#- Я был в шоке

serega_sw
()
Ответ на: комментарий от wfrr

>В C# так много синтаксического сахара, что C++ после этого кажется раем

Попробуй Эйфорию http://openeuphoria.org/docs/eu400_0001.html , в которой всего 2 сущности: atom и sequence (Рай с Нирваной в одном флаконе) :)

quickquest ★★★★★
()
Ответ на: комментарий от serega_sw

> А мне против своей воли приходится работать с C#. Ужос в перьях, одним словом. я привык работать с указателями и с памятью вытворять всякие кренделя на С++. а приходилось делать такие вещи на C#- Я был в шоке

Это правильно. Всех любителей "с памятью вытворять всякие кренделя на С++" надо либо отправить писать ядерный код, либо пересадить на яву/С#/python -- пока они дров не наломали.

sv75 ★★★★★
()
Ответ на: комментарий от AndreyKl

> Наглое 4.2. До диез язык не более высокого уровня чем Си (и си++). Это языки одного и того же уровня.

Чем меряем уровни?

sv75 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.