Сегодня получил простой но очень интересный вопрос: Насколько я понимаю С# для платформы .NET. Я не особо понимаю что это за платформа такая. Извиняюсь за глупый вопрос: в обычной виндовс программа, созданная на языке С# будет работать? Для этого кажется нужно только установить NET Framework? (орфография не мой :))
Классические программы используют функции Windows. Преимущество:
1. Программа выполняет код ОС напрямую и работает достаточно быстро
Недостатки Win32:
1. Код привязан к оборудованию. Проблемы решаются сложным введением HAL уровня, который становится прослойкой между кодом системы не связанным с оборудованием и кодом привязанным к оборудованию. Этот уровень уже есть в ОС Windows и кажется в Linux, но реализован не идеально, поэтому классические программы все равно привязаны к определенному железу. Если программа скомпилирована для Intel процессора, то она не сможет работать на абсолютно другой архитектуре.
2. Код неуправляем и программист должен сам заботиться о памяти. При плохом программировании постоянно возникают утечки и потери памяти и нестабильность работы системы. Код может получить доступ к любому участку памяти и это небезопасно
3. При использовании специфичного API для определенной версии Windows, программа перестает работать на других версиях. Например, очень часто можно встретить сообщение о том, что какая-то программа не совместима с XP, Vista или другой системой
1. Уровень абстракции намного лучше и код программы может выполнятся на разных платформах и архитектурах без перекомпиляции.
2. Код управляем платформой .NET (кодом и библиотеками платформы). Ненужно заботится об освобождении памяти и выполнение программы более безопасно, потому что нельзя получить доступ к чему угодно
3. Вопрос совместимости программ отсутствует. Если программа написана для .NET 2.0, то она будет работать на любой системе, где есть .NET 2.0 и даже в Linux. Да, пользователям иногда может понадобиться установка платформы и библиотек режима выполнения платформы, но это единственная проблема. К тому же, Windows Vista уже включает .NET 2.0 (через SP и обновления компания предоставляет возможность пользователям установить до 3.5), а Windows 7 будет включать 4.0.
При использовании .NET исчезает вопрос совместимости программы с ОС, но возникает проблема совместимости программы и платформы, но эта проблема решается легко. Если в Win32 приложении вы использовали специфичную функцию Vista, то программа не запустится в XP и решить эту проблему будет сложно. Вы не сможете просто скопировать системную библиотеку Vista в XP. Если же вы написали программу для .NET 3.5, а у пользователя нет этой версии, потому что он использует старый Windows XP, то проблема решается просто установкой платформы и все.
Программа, написанная для .NET будет работать не только в обычном Windows, но и в Linux и других системах, где реализуют платформу. Единственное – для Windows 9x платформа кажется не реализована и как я слышал не будет реализована. Но в наше время это не особая проблема. А необходимость устанавливать платформу тоже не проблема. Используй .NET 2.0 возможности которого великолепны и потенциальный ранок будет достаточно широким, потому что большинство XP систем уже содержат .NET и все Vista системы тоже содержат его.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
у меня возникло несколько вопросов:
ещё хотелось бы добавить что я пока не наблюдаю массового перехода на данную платформу, хотя сколько ей уже? я лично могу по пальцам пересчитать программы которые я устанавливал и они просили установить NET, почему тогда разработчики её игнорируют (или как это назвать)?
Хм, складывается впечатление, что у .NET нет недостатков.
Alexo,
Знакомое письмо, мое :))
olegmaster думаю если поискать можно кучу найти. JAVA существует уже много лет но не тала самым популярным языком, хотя ты и утверждаешь что там нет недостатков.
читаю объявления на работу, и вижу, что часто нужны программисты умеющие писать под NET, хотябы поэтому надо изучать эту платформу
Вот на счёт API я не согласен.
Если вы больше извращенец чем обычный программер, и, например, игнорируете менеджер памяти делфи и выделяете страницы в ручную, то конечно с фреймворком будет легче))
Вобщем-то хочу сказать, что если пришлось использовать специфические API, то интерпретатор их не заменит (ошибаюсь?).
_______________________________________________________
Так же мне кажется, что проблема памяти не совсем проблема. Я пишу под делфи, и всё равно слежу за утечками - так положено! но ведь их не будет! менеджер памяти делфи жрёт активно оперативу, но работает...
_______________________________________________________
Вообще, самым большим достоинством таких систем является их "стойкость" к написанию эксплойтов - я думаю это самый большой аргумент.
Так же вижу позитивность дот нета в том, что им занимается активно майкрософт, и наверное самые лучшие его решения будут заточены именно под .NET.
А ещё можно представить такую картину. Вы написали прогу и через 20 лет нужно опять её откомпилить. Срочно откомпилить! Если ваше детище на дот нете, разве не для этого она? Но кто станет компилить? :)
ronin
ещё хотелось бы добавить что я пока не наблюдаю массового перехода на данную платформу, хотя сколько ей уже? я лично могу по пальцам пересчитать программы которые я устанавливал и они просили установить NET, почему тогда разработчики её игнорируют (или как это назвать)?
Если используешь Vista,то там .NET установлен вместе с системой.Если нет,то вполне возможно,что он у тебя уже установлен,и ты об этом не знаешь.
На счет API посмотри сколько функций было добавлена в Vista. При работе с классическими приложениями, ты встаешь перед выбором - использовать новую хорошую функцию или нет. Если воспользуешся, то программа не будет работать в Windows 2000 и XP и ты ничего не сможешь сделать. Просто так функцию из одной версии в другую не перенесешь.
А вот при .NET, если ты воспользуешся новой функцией из новой версии платформы, то пользователям нужно только обновить платформу и версия ОС тут погоды не играет. Исключением кажется является WPF. Так что менеджер памяти - это вообще не причем тут
Михаил Фленов, т.е. ns хочешь сказать, что все те фишки с новым таскбаром в W7 будут так же работать и на XPшном таскбаре? Лично я немного сомневаюсь.
Alexo, вообще-то я ничего не утверждал, а спрашивал.
непопулярность, кстати, не является недостатком. хотя опять же, в энтерпрайзе и на мобилках жава весьма популярна, то есть в такой нише, где софт пишется на одной системе, а запускаться будет на другой.
ну правда, какие у дотнета недостатки кроме большого объема платформы, который нужно вытягивать, если она не установлена по-умолчанию?
2Alexo
Не уверен, что эти фишки реализуют на уровне .NET платформы. На уровне платформы пока реализовывали только те вещи, которые действительно смогут работать везде. Она не всесильна, хотя и пытается сгладить неровности между различными ОС. Java тоже пытается сгладить и она тоже не всесильна. И это не недостаток таких платформ, это то ограничение, с которым надо смирится. Ничего нет идеального.
Михаил Фленов, и это можно записать в минусы.
2Alexo
Можно занести это в недостаток
2Новичек
смотри msdn. Еще при выходе новой системы на конференциях сотрудники MS любят хвастаться количеством функций.
Самый главный недостаток программ написанных под точку нет - это производительность, в связи с платой за использование виртуальной машины... Памяти это жрет много, особенно это чувствуется на маленьких прогах, где казалось бы этого быть не должно... Оконный калькулятор в делфях и реализующий те же функции но сделанный через Windows.Forms сожрет памяти в разы больше...
По сути, прямого ответа на вопрос здесь нет. Простой пиар этой технологии.
Я просто поражаюсь умению русских программистов уходить от ответа.
Delphi 2010 вроде будет поддерживать вставки на .net по типу ассемблерных.
В плюсы Win32 языков можно занести то, что зная их вы сможете писать под Win32 и под .NET (Например Delphi For Win32 и Delphi Prism)
Да при чём тут пиар? имхо он даже и не нужен.
Я считаю что Мелкософт, с учётом всёй моей антипатии к ним, сделала отличный продукт и всё чтоб доставить его в массы...
в отличие от Java, судьба .Net под Linux/UNIX системы находится под юридическим(и техническим кстати тоже) вопросом. Все разработки на Mono могут быть объявлены вне закона(так как открыта для реализации только часть спецификаций!!!). В общем, как всегда пресловутый грязный подход МС - монополия...
На сегодня кроссплатформенность - это ТОЛЬКО Java...
(также стоит смотреть в сторону Qt ля создания легкопортабельных приложений, благо библиотека ну ооочень многофункциональна)
и кстати и java- и Qt-разработчикам в среднем платят больше чем за дотнет..
Mono с открытым кодом и не нарушает абсолютно ничего в GNU. Даже если бы была закрыта, она все равно не нарушает ничего и не может быть объявлена не в законе не над законом. MS открыла спецификацию полностью и не она разрабатывает Mono, так что она абсолютно не причем.
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.