![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Пончик |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
Всем ку-ку =)
Звиняюсь за демагогию... но о.О ну какбы... захотелось мне учить тот язык за какой платят деньги... (а то так и паскаль учить можно Короче я о другом =) расскажите какие изюменки в .НЕТ? Может у него в других местах всё намного быстрее работает? И почему 90% фирм которые предлогают работу ищут программистов именно на .НЕТ ? |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
дело далеко не в компиляторе ;)
Покажите код на C++ и код под .NET =) -------------------- СУВ, Partizan. |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Билдер компилит сразу в машинный код, а .NET - в байт-код, который потом на лету (Just In Time) преобразуется
в машинный... Из фишек например можно назвать поддержку множества языков на одной платформе, и удобство повторного использования кода... Ну и много других фишек, которые лень вспоминать... -------------------- ![]() |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Если хочется той же (примерно) скорости, то лучше использовать unsafe-код. В вычислительных работах он будет выполняться значительно быстрее за счет отсутствия контроля CLR и множества проверок (выход за границы массива, выход за границы типа и т.п.). Поэтому попробуй переписать код в unsafe, должно получиться быстрее. А вообще, C# как бы по своей сути не претендует на лучшую скорость, т.к. работает под управлением CLR и, как правильно было сказано, сначала компилируется в байт-код, а уже потом происходит его выполнение с сохранением контроля, работой GC и тому подобным. Его сила - в его простоте, удобстве, еще большей абстрагированности от низкоуровневых проблем и огромном количестве возможностей, реализуемых с помощью библиотеки классов .NET, которые предоставляют отличную функциональность при минимальных затратах по сравнению с другими языками а-ля Паскаль, C/C++ и т.п.
Так что мое личное мнение - C# учить нужно обязательно, не зря .NET-программисты одни из наиболее востребованных в настоящее время на рынке труда. |
|||
|
||||
| Пончик |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
Мммм ребята =) если честно то только mr.Anderson практически ответил на то что я хотел =)
Я какбы уже знаю о .НЕТ. Ну о принципе работы и т.д. само собой что интерпритированый код будет в 2 раза дольше грузится. Вот практически самое то что я хотел услышать =) но если честно я например после Делфей или того же С++ (РАД Студио) более высокой удобности не заметил (может и на первых порах). А ещё чем отличается .НЕТ? Ну может он на чём то специализируется? Например НЕТ специализируется на Базах Данных и т.д. ну вот такое бы хотелось услышать.
Может я и чайник в .НЕТ =) но дело в самом подходе =). Я имел ввиду не только Билдер, но тот же МФЦ А как? Если я правильно понял... унсейф это более для продвинутых программистов? Если скажем я работал не мало на С++ (1 год С++ 1 год Делфи) и уже какбы знаю азы и т.д. то я спокойно могу писать в ансейфе? |
|||
|
||||
| wester |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 27.2.2009 Репутация: 3 Всего: 13 |
||||
|
||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Пончик, насчет "а как" неплохо бы сначала погуглить про то, что вообще такое unsafe, а потом уже пробовать "а как". А вообще - в настройках проекта на вкладке Build включить галку "Allow unsafe code". А потом переписать код, допустим, так:
И потом... Нет такого понятия как ".NET специализируется на...". Нет вообще понятия специализации для языков типа паскаля, бейсика, с/с++ и уж тем более языков .NET и Java. Узкоспециализированы только некоторые языки, типа FORTRAN, который создан специально для вычислений. На языках вселенной .NET можно сделать все, что угодно, за некоторыми исключениями, которые в своем решении требуют низкоуровневой работы (допустим, антивирус на нем не напишешь в принципе). Но остальное - все, что угодно, все, что доступно твоим знаниям, на них сделать можно и, что главное, легко и быстро, без лишних проблем. Добавлено через 4 минуты и 42 секунды
Нет, не можешь. Не рекомендую. Пока ты не разберешься в деталях работы указателей, обращения с памятью, деталях функционирования твоих программ и их работы в операционной системе, нельзя, повторяю, нельзя писать unsafe-код. CLR чем и хороша, что избавляет программиста от многих проблем работы в более ранних языках, где приходилось следить за памятью, за утечками, за выходом за границы и так далее и тому подобное... Здесь этого нет по умолчанию, в этом несомненный плюс системы. И unsafe здесь оставлен только для реально нужных задач, тяжелых вычислений или, допустим, управления системой через импорт библиотек, написанных на C/C++, в которых, к примеру, функции требуют указателей в качестве аргументов. Тут без unsafe никак. Но ты же не будешь этого делать? В принципе, всех возможностей библиотеки классов .NET перечислить, наверное, невозможно, они реализуют огромное множество задач, так что вряд ли тебе в ближайшие несколько лет изучения реально понадобится unsafe-код. Это сообщение отредактировал(а) mr.Anderson - 17.7.2009, 21:38 |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
И еще. Сила .NET в очень многих вещах. Если вкратце.
|
|||
|
||||
| Пончик |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
Убедил!
С него то я и отталкивался =) Думаю что 99.99% буду =) поскольку я заядлый фанат оптимизации... то может и не для гипер задач буду... но буду! =) главное только научится танцевать с бубном Жалко :( а я привык к ним... Вот читаю... вроде тут Хендл какбы заменяет их. Типа Хендл Обекта.
Радует =)
Слышал что только на Винде + Кубунту с графическим интерфейсом (вроде начиная с 11). Ну ладненько =) буду надеятся что не зря учу =) |
||||||
|
|||||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Вы в .net программе оптимизацию Release поставили? И опять же, код программы на .net хотелось бы увидеть, ибо разница должна быть 10-30% процентов, но никак не 100. -------------------- I don't need a reason being who I am... |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Сначала научись танцевать без бубна. Я программирую серьезно уже 8 лет, и я еще не могу сказать, что я на 100% уверен, что могу писать безопасный unsafe-код. |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
Пончик,
Программка на Билдере бегала примерно в 10 раз быстрее... это может означать только одно: криворуко-написанный код. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
unsafe - вовсе не панацея, всё, конечно, зависит от задачи, но он может дать проценты, а не разы
вероятнее всего, код .нет очень кривой из-за незнания платформы |
|||
|
||||
| Skynin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 0 Всего: 10 |
Присоединяюсь к сомневающимся - разница в пару десятков процентов еще так сяк. Но в 10 раз... код в студию. Очень вероятно что по неопытности использовали самые неэффективные конструкции-"паттерны" для C#, которые в С++ были вполне хороши.
Откуда эта цифра - в 2 раза? Во вторых CLR не умеет интерпретировать код. В третьих - "грузится" и "выполняется" совсем разные вещи.
Когда начнут "штрафовать" деньгами, куды тот фанатизм денется Тем более что и нужна то она в реальной жизни - крайне редко. Достаточно знать-понимать какие конструкции медленные, а какие - быстрые. И "один лишний запрос к БД перекроет всю твою оптимизацию в сотни раз". Так что проектировать нужно учиться, а не оптимизировать. |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Верно все... Сначала заставь свою программу работать, потом заставь ее работать правильно, и лишь потом заставь ее работать быстро (с). Заниматься в "99.99%" случаев оптимизацией с использованием unsafe-кода на C# при опыте программирования 1 год, таким знанием техники работы платформы .NET и таким оперированием терминами - без обид, но нельзя.
|
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
||||
|
||||
| Пончик |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
Обижаете ! =) я чайник но не на столько ))))))) Да просто с массива где записаны все кнопки типа "йцуеншзхъфывпролдж" вот так. Рендомом выбираю 1 букву и дописываю её в строку. Позже вывожу строку на екран. Тоже у меня на Билдере. Может... я же не знаю. В С++ всё супер. Тут не очень. Предполагаю что из-за ссылок. Т.к. в С++ они есть а тут нету =) ну.... короче знаю что коряво =) . Но работает!!! Сама процедура:
ОнКриейт:
.Н
Это хз где )))))) короче поставил кнопку и нажал на неё 2 раза
Знаю что скорее всего криво и т.д. но вы думаете прочитав пару страниц о Шарпе я буду писать нормально на нём? =) Добавлено через 1 минуту и 55 секунд Научимся =) а куда же я денусь? =) Пасиб! Учту =) |
||||||||||
|
|||||||||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
))) Автор-то на Managed C++ пишет. А все думали, что на C#
Вы как-то странно время выполнения кода меряете, судя по всему проблема именно там. Используйте System.Diagnostics.Stopwatch. -------------------- I don't need a reason being who I am... |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
||||
|
||||
| Пончик |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
а? И я думал что я на Шарпе))))))))))))) По крайней мере у меня сложилось такое впечетление ))))) И это..... это же вроде Вин Формс оО
Почему странно? )))) В Билдере всё работало ))))))) тут нашёл что Тик каунт тоже что то в этом роде... ну и использовал =) хотя... ничего не вышло =) А разница то какая?! О_О ееее это же сокращённая форма |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
сокращённая форма от s = s + value, что тоже не стоит вызывать в цикле, т.к. на каждой итерации будет создаваться новая строка с копированием в неё содержимого предыдущего значения + нового, сами строки в .нет immutable, т.е. неизменяемые замени на StringBuilder, убери прогресс-бар и перепроверь результат |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Разница хотя бы в том, что в .NET строка - "неизменяемый" объект, и при операции например += создается новый объект строки...
Для "динамического" построения строк есть класс StringBuilder, где все оптимизировано... Не успел... Это сообщение отредактировал(а) kosmonaFFFt - 18.7.2009, 13:52 -------------------- ![]() |
|||
|
||||
| mihryak |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
на .Net, в который входит и managed c++, и c#, и VB.Net, и ....... библиотеки классов (собственно .Net Framework, включая WinForms) у них общие
потому что в .нет для замеров времени используется Stopwatch, только и всего на новый язык нередко старые конструкции и приёмы не выйдет перенести as is Это сообщение отредактировал(а) mihryak - 18.7.2009, 13:59 |
||||
|
|||||
| Пончик |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
Тьфу йомайо! =)
И что мне учить? Шарп? Или Менежед С++ ? Что лучше? оО |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Учить нужно всю платформу в комплексе. Для начала разберитесь, что такое FCL, CLR и потом уже один из языков (я бы рекомендовал C# и потом F#). Каждый инструмент под свою задачу. Определитесь с задачами... -------------------- I don't need a reason being who I am... |
|||
|
||||
| Пончик |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
А этот Менежед С++ похож на Шарп? Ну стоит ли мне дальше читать о Менежед С++ ?
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Riddik, очень просто, писал уже серьезные программы. Для того возраста это было очень даже неплохо, выигрывал конкурсы и т.п.
Пончик, ты, елки... Ну ты даешь. Говорить о C#, когда речь шла о Managed C++... Вообще, основным языком платформы .NET считают C#, иногда сюда еще причисляют VB.NET, не знаю, почему. Но C# явно основной. Поэтому мое личное мнение - учить нужно его, а не "отростки" в виде Managed C++/VB.NET и иже с ними. А вообще - купи себе Троелсена книгу "C# и платформа .NET 3.0" и сиди разбирайся по ней. И не пиши программы, пока не научишься чему-то толковому из этой книги, потому что стиль написания кода у тебя, мягко говоря, хромает. Книга хорошая, поэтому покупай и учись. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Пончик, зачем все эти мелкие лишние вопросы? не проще ли погуглить 10 секунд, вместо того, чтобы часами ждать ответа?
-------------------- СУВ, Partizan. |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
||||
|
||||
| Пончик |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 21.6.2009 Репутация: нет Всего: нет |
Хе хе само собой =) Ну на чистом С++ вроде не плохо. Но тут же не С++ =) потому само собой что сажусь разбиратся! ;) |
||||||
|
|||||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Человек застеснялся наверно)))
А ну-ка давай код сюда быстро! -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
в С++ так же получишь эксепшен
ну тут вообще насмешил Нету нигде кроме виндовса разве что mono |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Portable.Net охватывает сразу несколько: Win32, AIX, BeOs, Mac OS X, Solaris, Linux и чёт ещё наверно...))) -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
ещё как есть, кстати System.AccessViolationException получал его в safe-коде при многопоточном использовании MS SQL CE 3.5
да, в моём случае было взаимодействие с неуправляемым кодом, но так или иначе любой .нет-код будет в конце концов взаимодействовать с неуправляемым, так что нет никакой гарантии, что это исключение никогда не встретится |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |