Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему .NET ? 
V
    Опции темы
Пончик
Дата 17.7.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Всем ку-ку =)

Звиняюсь за демагогию... но о.О ну какбы... захотелось мне учить тот язык за какой платят деньги... (а то так и паскаль учить можно  smile ) зашёл на сайт нашего города... и начал искать вакансии... практически каждая вакансия отмечалась текстом ".NET" . Если чесно мне мелкософт не очень.. ну может из-за привычки... короче взял я книгу и начал осваиватся. Ну прочитал страниц 200-300. И мне захотелось сравнить .НЕТ с чем то другим. Взял свою старенькую программку на Билдере (генератор случайных чисел) и переписал её под .NET . Вообщем я пришёл в недоумение о_О . Начнём с того... что мне .НЕТ начал нравится возможностями и т.д. и вроде всё так супер сделано, и вроде компилятор от майкрософта (один из лучших). И вроде всё супер!... но! Программка на Билдере бегала примерно в 10 раз быстрее... честно говоря я просто выпал оО. Все орут что у билдера компилятор фиговый.... и т.д. и т.п. ... а тут он намного быстрее оказался... да понимаю что это капля в море... и что во многих других факторах всё может быть иначе... но тут существенный прокол... на секундочку я себе представил а что если сделать огромный сервер со связкой с Оракулом и в прихватку несколько сотен юзеров в онлайне? о_О оно же наверно будет глючить ужасно...

Короче я о другом =) расскажите какие изюменки в .НЕТ? Может у него в других местах всё намного быстрее работает? И почему 90% фирм которые предлогают работу ищут программистов именно на .НЕТ ?
PM MAIL   Вверх
Partizan
Дата 17.7.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



дело далеко не в компиляторе ;)

Покажите код на C++ и код под .NET =)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kosmonaFFFt
Дата 17.7.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Билдер компилит сразу в машинный код, а .NET - в байт-код, который потом на лету (Just In Time) преобразуется
в машинный... Из фишек например можно назвать поддержку множества языков на одной платформе, и удобство
повторного использования кода... Ну и много других фишек, которые лень вспоминать...


--------------------
user posted image
PM MAIL ICQ   Вверх
mr.Anderson
Дата 17.7.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Если хочется той же (примерно) скорости, то лучше использовать unsafe-код. В вычислительных работах он будет выполняться значительно быстрее за счет отсутствия контроля CLR и множества проверок (выход за границы массива, выход за границы типа и т.п.). Поэтому попробуй переписать код в unsafe, должно получиться быстрее. А вообще, C# как бы по своей сути не претендует на лучшую скорость, т.к. работает под управлением CLR и, как правильно было сказано, сначала компилируется в байт-код, а уже потом происходит его выполнение с сохранением контроля, работой GC и тому подобным. Его сила - в его простоте, удобстве, еще большей абстрагированности от низкоуровневых проблем и огромном количестве возможностей, реализуемых с помощью библиотеки классов .NET, которые предоставляют отличную функциональность при минимальных затратах по сравнению с другими языками а-ля Паскаль, C/C++ и т.п.

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


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Пончик
Дата 17.7.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Мммм ребята =) если честно то только mr.Anderson практически ответил на то что я хотел =)
Я какбы уже знаю о .НЕТ. Ну о принципе работы и т.д. само собой что интерпритированый код будет в 2 раза дольше грузится. 
Цитата(mr.Anderson @  17.7.2009,  20:33 Найти цитируемый пост)
Его сила - в его простоте, удобстве, еще большей абстрагированности от низкоуровневых проблем и огромном количестве возможностей, реализуемых с помощью библиотеки классов .NET, которые предоставляют отличную функциональность при минимальных затратах по сравнению с другими языками а-ля Паскаль, C/C++ и т.п.

Вот практически самое то что я хотел услышать =) но если честно я например после Делфей или того же С++ (РАД Студио) более высокой удобности не заметил (может и на первых порах). А ещё чем отличается .НЕТ? Ну может он на чём то специализируется? Например НЕТ специализируется на Базах Данных и т.д. ну вот такое бы хотелось услышать. 


Цитата(Partizan @  17.7.2009,  19:59 Найти цитируемый пост)
дело далеко не в компиляторе ;)Покажите код на C++ и код под .NET =)

Может я и чайник в .НЕТ =) но дело в самом подходе =). Я имел ввиду не только Билдер, но тот же МФЦ 


Цитата(mr.Anderson @  17.7.2009,  20:33 Найти цитируемый пост)
Поэтому попробуй переписать код в unsafe

А как?  smile 

Если я правильно понял... унсейф это более для продвинутых программистов? Если скажем я работал не мало на С++ (1 год С++ 1 год Делфи) и уже какбы знаю азы и т.д. то я спокойно могу писать в ансейфе?
PM MAIL   Вверх
wester
Дата 17.7.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



Пончик, 
все очень просто 
http://msdn.microsoft.com/ru-ru/library/chfa2zb8.aspx
PM MAIL   Вверх
mr.Anderson
Дата 17.7.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Пончик, насчет "а как" неплохо бы сначала погуглить про то, что вообще такое unsafe, а потом уже пробовать "а как". А вообще - в настройках проекта на вкладке Build включить галку "Allow unsafe code". А потом переписать код, допустим, так:
Код

unsafe
{
   for (...)
   { ... }
}

И потом... Нет такого понятия как ".NET специализируется на...". Нет вообще понятия специализации для языков типа паскаля, бейсика, с/с++ и уж тем более языков .NET и Java. Узкоспециализированы только некоторые языки, типа FORTRAN, который создан специально для вычислений. На языках вселенной .NET можно сделать все, что угодно, за некоторыми исключениями, которые в своем решении требуют низкоуровневой работы (допустим, антивирус на нем не напишешь в принципе). Но остальное - все, что угодно, все, что доступно твоим знаниям, на них сделать можно и, что главное, легко и быстро, без лишних проблем.

Добавлено через 4 минуты и 42 секунды
Цитата
Если я правильно понял... унсейф это более для продвинутых программистов? Если скажем я работал не мало на С++ (1 год С++ 1 год Делфи) и уже какбы знаю азы и т.д. то я спокойно могу писать в ансейфе?

Нет, не можешь. Не рекомендую. Пока ты не разберешься в деталях работы указателей, обращения с памятью, деталях функционирования твоих программ и их работы в операционной системе, нельзя, повторяю, нельзя писать unsafe-код. CLR чем и хороша, что избавляет программиста от многих проблем работы в более ранних языках, где приходилось следить за памятью, за утечками, за выходом за границы и так далее и тому подобное... Здесь этого нет по умолчанию, в этом несомненный плюс системы. И unsafe здесь оставлен только для реально нужных задач, тяжелых вычислений или, допустим, управления системой через импорт библиотек, написанных на C/C++, в которых, к примеру, функции требуют указателей в качестве аргументов. Тут без unsafe никак. Но ты же не будешь этого делать? В принципе, всех возможностей библиотеки классов .NET перечислить, наверное, невозможно, они реализуют огромное множество задач, так что вряд ли тебе в ближайшие несколько лет изучения реально понадобится unsafe-код.

Это сообщение отредактировал(а) mr.Anderson - 17.7.2009, 21:38


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 17.7.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



И еще. Сила .NET в очень многих вещах. Если вкратце.
  •  Контроль за выполнением программы со стороны CLR. Это выражается, к примеру, в следующем.
  •  Нет понятия "Исключение типа Access Violation". В safe-коде его нет и быть не может. То есть оно может возникнуть в процессе работы, но это не будет так, как на Delphi/Builder и т.п., работаешь-работаешь с программой, все нормально, начинаешь ее закрывать - и на тебе, AV. Не пойми откуда, не пойми, по каким причинам. Здесь это невозможно, если код safe.
  •  Производные из 2: все, что ты делаешь в safe, контролируется CLR, тебе не дадут вылезти за пределы массива, не дадут вылезти за пределы типа, не дадут обратиться в память "не туда", "чистого" доступа к памяти здесь нет, так что любые твои попытки это сделать не обернутся крахом системы, сменой цвета экрана там, я не знаю, BSOD'ом для "особо продвинутых". Ты просто получишь исключение времени выполнения со стороны среды. Сейчас вот сидел, экспериментировал, пытался запороть систему в safe-коде. Попробовал объявить массив байтов размером в 1 миллиард элементов. После запуска сразу же получил исключение OutOfMemoryException (нехватка оперативной + виртуальной памяти), а не обвал системы с последующим перезапуском и обрушением работающих программ. В C/C++/Pascal это обычное дело. Чувствуешь разницу?
  •  Многие проблемы ушли в прошлое, к примеру, та же работа с указателями. Если ты принимался за .NET и, в частности, C#, то ты знаешь, что указателей здесь нет как таковых (опять же, мы говорим только про safe-код). Вот мы сейчас на 1 курсе в универе проходили C, знаешь, сколько у моих одногруппников проблем с указателями? Сплошные ошибки при работе, поскольку они еще только учатся, отсюда проблемы в программах, неправильное оперирование указателями, памятью, вываливания программы, неверные результаты, дикая отладка по ночам и т.д. и т.п. "Красота", правда? А вот в C# нет указателей. Там есть ссылки. Которые не дают тебе ошибаться настолько, чтобы что-то обрушилось.
  •  Другая нотация, другая система написания кода, приближение кода к ООП-концепции, что позволит людям волей-неволей учиться писать правильный код.
  •  Кроссплатформенность. Где есть .NET (а он есть почти везде), там твоя программа будет работать вне зависимости от архитектуры, операционной системы и т.п.
  •  Ну еще можно упомянуть, что за счет создания огромной библиотеки классов .NET стало значительно проще работать со многими вещами, оперировать системой, данными и так далее.
Это только основные моменты. Убедил? )


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Пончик
Дата 17.7.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 21.6.2009

Репутация: нет
Всего: нет



Убедил!  smile 

Цитата(mr.Anderson @  17.7.2009,  21:37 Найти цитируемый пост)
Узкоспециализированы только некоторые языки, типа FORTRAN, который создан специально для вычислений.

С него то я и отталкивался =)

Цитата(mr.Anderson @  17.7.2009,  21:37 Найти цитируемый пост)
И unsafe здесь оставлен только для реально нужных задач, тяжелых вычислений или, допустим, управления системой через импорт библиотек, написанных на C/C++, в которых, к примеру, функции требуют указателей в качестве аргументов. Тут без unsafe никак. Но ты же не будешь этого делать?

Думаю что 99.99% буду =) поскольку я заядлый фанат оптимизации... то может и не для гипер задач буду... но буду! =) главное только научится танцевать с бубном  smile 

Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
Многие проблемы ушли в прошлое, к примеру, та же работа с указателями. Если ты принимался за .NET и, в частности, C#, то ты знаешь, что указателей здесь нет как таковых (опять же, мы говорим только про safe-код). Вот мы сейчас на 1 курсе в универе проходили C, знаешь, сколько у моих одногруппников проблем с указателями? Сплошные ошибки при работе, поскольку они еще только учатся, отсюда проблемы в программах, неправильное оперирование указателями, памятью, вываливания программы, неверные результаты, дикая отладка по ночам и т.д. и т.п. "Красота", правда? А вот в C# нет указателей. Там есть ссылки. Которые не дают тебе ошибаться настолько, чтобы что-то обрушилось.

Жалко :( а я привык к ним... Вот читаю... вроде тут Хендл какбы заменяет их. Типа Хендл Обекта. 
Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
что позволит людям волей-неволей учиться писать правильный код.

Радует =)

Цитата(mr.Anderson @  17.7.2009,  21:57 Найти цитируемый пост)
Кроссплатформенность. Где есть .NET (а он есть почти везде), там твоя программа будет работать вне зависимости от архитектуры, операционной системы и т.п.

Слышал что только на Винде  + Кубунту с графическим интерфейсом (вроде начиная с 11).

Ну ладненько =) буду надеятся что не зря учу =) 
PM MAIL   Вверх
QryStaL
Дата 17.7.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Цитата(Пончик @  17.7.2009,  19:32 Найти цитируемый пост)
Программка на Билдере бегала примерно в 10 раз быстрее...

Вы в .net программе оптимизацию Release поставили? И опять же, код программы на .net хотелось бы увидеть, ибо разница должна быть 10-30% процентов, но никак не 100.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
mr.Anderson
Дата 17.7.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
Думаю что 99.99% буду =) поскольку я заядлый фанат оптимизации... то может и не для гипер задач буду... но буду! =) главное только научится танцевать с бубном

Сначала научись танцевать без бубна. Я программирую серьезно уже 8 лет, и я еще не могу сказать, что я на 100% уверен, что могу писать безопасный unsafe-код.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Rififi
Дата 17.7.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



Пончик, 
Программка на Билдере бегала примерно в 10 раз быстрее...
это может означать только одно: криворуко-написанный код.
PM MAIL   Вверх
mihryak
Дата 17.7.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



unsafe - вовсе не панацея, всё, конечно, зависит от задачи, но он может дать проценты, а не разы
вероятнее всего, код .нет очень кривой из-за незнания платформы
PM MAIL ICQ   Вверх
Skynin
Дата 18.7.2009, 00:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 0
Всего: 10



Присоединяюсь к сомневающимся - разница в пару десятков процентов еще так сяк. Но в 10 раз... код в студию. Очень вероятно что по неопытности использовали самые неэффективные конструкции-"паттерны" для C#, которые в С++ были вполне хороши.

Цитата

Ну о принципе работы и т.д. само собой что интерпритированый код будет в 2 раза дольше грузится.

Откуда эта цифра - в 2 раза? Во вторых CLR не умеет интерпретировать код. В третьих - "грузится" и "выполняется" совсем разные вещи.

Цитата

поскольку я заядлый фанат оптимизации... 

Когда начнут "штрафовать" деньгами, куды тот фанатизм денется smile
Тем более что и нужна то она в реальной жизни - крайне редко. Достаточно знать-понимать какие конструкции медленные, а какие - быстрые. И "один лишний запрос к БД перекроет всю твою оптимизацию в сотни раз". Так что проектировать нужно учиться, а не оптимизировать. 
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
mr.Anderson
Дата 18.7.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Верно все... Сначала заставь свою программу работать, потом заставь ее работать правильно, и лишь потом заставь ее работать быстро (с). Заниматься в "99.99%" случаев оптимизацией с использованием unsafe-кода на C# при опыте программирования 1 год, таким знанием техники работы платформы .NET и таким оперированием терминами - без обид, но нельзя.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.