Когда .NET только анонсировали, то многие считали, что Microsoft просто придумывает альтернативу Java и хочет задавить конкурента непонятно зачем и почему. Я не увидел в этой разработки ничего гениального и удобного с точки разработки программ. Код, созданный в Visual Studio .NET выглядел не эстетично, и главной причиной было то, что все находилось в одном файле – сгенерированный дизайнером код и написанный программистом. Это было ужасно.
Первая версия .NET действительна была похожа на то, что ее делают ради кроссплатформы и Джоел на своем блоге даже написал знаменитую заметку о том, что Microsoft теряет контроль над самым главным своим состоянием – над API. В интернете быстро появился открытый проект Mono, который реализовал .NET для Linux. Если я не ошибаюсь, то первую версию он реализовал полностью. Сейчас я могу сказать, что Microsoft не потеряла контроля над API, а постепенно получает над ним контроль и компания не создала конкурента для Java, она создала хорошего помощника для неуправляемого кода, написанного на C++ или Delphi.
Разработчики и архитекторы Microsoft наверно тоже поняли ошибку или просто мы не поняли их начальной задумки, но курс .NET резко изменился после 1.1. Нет, язык остался тот же, но я увидел.NET по новому, его начали по другому позиционировать. Начиная с .NET 2.0 платформа не стала уже направляться на кроссплатформенность и стала больше направляться на разработку приложений для Windows. Об этом говорят и появившиеся в третьей версии такие технологии как WCF и главное WPF (Windows Presentation Foundation о котором я писал на Hackish Code) . Технология Windows Presentation Foundation направлена на создание ... как это сказать по русски ... (по английски часто пишут stunning interfaces), наверно ошеломляющих интерфейсов для Windows и использования всех преимуществ платформы Avalon.
Именно WPF и Avalon будут серьезные проблемы при портации приложений в Mono. И чем больше будет приложений с WPF, тем хуже будет портация, потому что Avalon – это движок, присущий Windows и его портировать будет проблематично. Да и не нужно портировать, его нужно использовать в той системе, для которой технология и создавалась.
Обратите внимание на новость Более глубокий взгляд Visual Studio 2010, которую я писал опять же для Hackish Code. В последнем абзаце я указываю явную направленность Microsoft при создании среды разработки следующего поколения Visual Studio 2010. Компания уже не конкурирует с Java и не пытается перетягивать этих разработчиков, она конкурирует сама с собой, т.е. с VC 6.0 и хочет завоевать лояльность своих же пользователей и перевести их на C#, чтобы создаваемые приложения были лучше и безопаснее.
Зачем компании Microsoft нужно поощрять разработчиков писать под .NET? Я могу только догадываться, и мои догадки связаны со всеми последними инициативами Microsoft. Компания борется за создание безопасных и надежных приложений не только внутри компании и не только своих продуктов, но и всех продуктов на платформе Windows. Мне кажется, это главная причина. Ведь когда у пользователя зависает XXX программа, то пользователь ругается матом не на производителя программы XXX, а на Microsoft. Плюс, если программы для Windows будет надежны, то можно говорить о надежности и самой платформе. Именно поэтому компания помогает разработчикам и даже конкурентам.
Вторая причина - она хочет, чтобы не было проблем при переходах с одной версии на другую. В каждой версии Windows есть недокументированные возможности или какие-то черные ходы, которые могли быть оставлены по ошибке, по случайности или просто из-за банальной спешки. Недокументированные возможности остаются не потому, что компания пытается скрыть что-то от нас и не нужно использовать эти возможности, потому что в следующей версии ОС этих возможностей может не быть. Когда Microsoft пытается убрать мусор, который оставался в ОС, то программы, в которых программисты зачем-то использовали недокументированные возможности перестают работать и опять ругают Microsoft.
C++ предоставляет слишком много возможностей, а в управляемом языке система может управлять кодом и если какая-то возможность не нужна или ее посчитали небезопасной, ее проще исключить и это будет выгодно как сторонним разработчикам (их программы будут работать и в будущих версиях Windows), так и компании Microsoft (будет меньше мата в их сторону). Да, мы все еще можем в C# вызывать через маршалинг систему и использовать недокументированные возможности напрямую, но я еще раз говорю – НЕ ДЕЛАЙТЕ ЭТОГО. Не создавайте проблем себе и компании Microsoft. Компания ничего не скрывает от нас. Если что-то не включено в официальный API, значит на это были причины и когда причины изменятся, описание будет включено в MSDN и SDK.
Да, C++ заменить на все 100% не получиться и он будет жить. Точно так же, как Assembler будет жить еще долго в сердцах программистов. Но эти платформы могут дополнять друг друга, и программисты получат максимум преимуществ от ОС Windows.
Насколько плохо я воспринял первую инициативу по созданию .NET и первую реализацию, как насколько контрастно и положительно я воспринял вторую версию и удобство ее реализации. Код оформлять теперь намного удобнее, благодаря partial классам, оформление свойств стало удобнее и проще. .NET Framework 3.0 и 3.5 продолжили традицию делать разработку удобнее и проще, а не пытаться заменить Java.
Платформа .NET не пытается заменить Java, чтобы захватить мир, с ее помощью компания хочет сделать разработку под Windows проще, а создаваемые программы безопаснее. Если кто хочет портировать CLR на другие платформы, никто не запрещает. Приложения Win32 тоже можно выполнять в Linux из эмулятора, но это же не говорит о том, что Microsoft потеряла контроль над своим API! А то, что приложение .NET можно будет выполнить в Linux благодаря Mono, тоже ничего плохого не сделает, от этого все только выиграют. И этот подход мне импонирует и нравится.
А свое первоначальное негативное отношение к .NET я связываю с тем, что его неправильно позиционировали в прессе, да и сама Microsoft писала непонятно что в релизах, только общие слова и никакой конкретики.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Примерно месяц назад проходила акция от MS. Подпишись на подписку и получи 8 книг. Так большая часть этих книг про NET.
А вы бы хотели разрабатывать не на платформе дотНЕТ, а реализовывать функционал САМОЙ этой платформы?
Ты спрашивал уже разные вопросы и я уже говорил, что в Microsoft занимался бы любой тематикой, а что касается .NET, то с удовольствием занимался бы и написанием функционала. Писать внутренности этой платформы для меня было бы очень интересно. Проблема в том, что это нереально.
Платформа .NET заменила для меня Delphi. Благо теперь на одном языке можно писать различные приложения. Да, для их исполнения нуен установленный .NET Framework, но как мне кажется у многих он стоит, а в Vista он уже предустановлен. Так что в этом проблем не вижу. .NET отличная вещь, с каждым разом Microsoft выпускает все более качественную платформу, так что .NET будет жить, а лично я буду на нём разрабатывать свои приложения, чего и вам всем желаю.
1. Я то прекрасно понял
2. Обратная совместимость у .NET есть, только причем тут это? Перестань выдерать слова из текста, а читай текст. В абзаце прекрасно написано уже в следующем предложении про ОС, значит имеется ввиду переходы с одной версии на другую именно ОС, а не .NET.
3. "Чем больше программистов приманит к себе платформа, тем больше программ для Windows". С точностью наоборот - чем больше программ под Windows, тем больше приманит к себе платформа. А программы под Windows разве пишутся на .NET? Почему нельзя писать на Delphi или C++?
1. Сам подумай чем грозит MS кроссплатформенность....
2. Я ничего не выдерал... Просто спросил, насколько я знаю .NET 2.0 не совместим с .NET 1.1. Поэтому и задал вопрос... Я про ОС не спрашивал, спросил про платформу.
3. А откуда же возьмутся программы, если нет программистов? А программы под Windows так же пишутся на .NET. Писать можно и на asm'e, только что-то это не очень распространено. Все дело в инструментах.
Следуя твоей логике можно сказать, что тачка это копия Mercedes. Я же говорю, что Mercedes копия BMW, копия именно набора ИДЕЙ. Т.к. наличия у тачки колеса не делает ее крутой машиной! а вот собрание идей типа, коробка автомат, abs и тд дает хороший результат.
Блин, я не пойму почему не нужно? Это во-первых, во-вторых я ничего не сравниваю... Мне конечно больше нравится ездить на BMW, но если хотят дать Mercedes я не откажусь....
У меня складывается такое, ощущение, что если я скажу, что-то против, то ты воспринимаешь это как покушение на твой авторитет или что-то в этом роде. Ну конечно можешь опять не публиковать этот пост.
1. Если любую программу можно выполнить на любой ОС, зачем тогда платить за Windows?
2. Ты выделил кусочек текста с помощью quote
3. Вот и вдумайся, что ты сам же и написал. Главное - программисты, а не платформа. С тем же успехом, можно затягивать в программирование Win32 и результат будет тот же. Зачем затеивать такой дорогостоящий проект как .NET?
Проблема в том, что ты даже не сказал против. Давай по пунктам:
1. ты просто спросил, я просто ответил
2. ты тоже просто спросил, просто зачем-то вырвал кусок из моего текста. Если не относится к тексту, а просто хотел спросить про переносимость, то зачем выдерать отрывок. я сразу начинаю думать, что у меня там лажа и ищу ошибку
3. вот самое главное, где ты высказываешь свое мнение, очень корректное и интересное, просто я считаю, что не нужно сравнивать с Java. Идеология в корне у всех одинаковая - создать программу, но это не значит, что их нужно всех под одну гребенку. Я тебя уверяю, что пропасть между Java и .NET слишком большая.
Я не пытаюсь тебя ущемить в правах, пиши и высказывайся. И тут я могу твои же слова направить в твою сторону: У меня складывается такое, ощущение, что если я скажу, что-то против, то ты воспринимаешь это как покушение на твой авторитет или что-то в этом роде. :) Раз ты пишешь на моем блоге, то мне нужно же как-то отвечать, или мне просто игнорировать твои сообщения?
1.3. Подожди, программисты же не быдло! иначе, я же говорю, все пользовались asm'ом до сих пор. Ты же пользуешься VS, а не XDeveloper, т.к. первый дает больше возможностей с меньшими телодвижениями. Я просто уверен в том, что основная цель - это привлечь программистов к Windows, зачем тогда раздавать VS (express вроде).
2.2 Во-первых, если бы была лажа я бы так и написал :). Во-вторых, я спросил про совместимость .NET исходя из того, что я чаще обновляю платформу, чем ОС. В итоге, что получается, ну не трудно мне поставил я на XP 2.0, но потом же появилась 3.0, 3.5 скоро 4. И все это мне пришлось ставить. ОС у меня так и осталась XP. Так что мне как пользователю пофиг, что этот софт работает и на 95 и на Vista.
2.3 Я тебе говорил про идею. Что значит просто? Вот опять ты утрируешь, все мы состоим из молекул. Ты ответишь, что из-атомов, я что из кварков... Суть не в этом...
Ну последнее ко мне не относится, т.к. это твой блог, а не мой. Я это написал для того, чтобы у тебя не возникло ощушение, что я это моя цель. Я просто выссказываюсь, когда не согласен в чем-то. Не вижу смысла писать, что-то типа: "Да! согласен на все 100%! Зайцы самые красивые". Ну да ладно это к теме не отностися.
1.3 Я до сих пор не увидел связи. C++ тоже раздают на халяву. Для чего же тогда тратить деньги на создание .NET и притягивать еще каких-то программистов? На самом деле я даже не понимаю каких, когда большинство так пишут под Windows, а остальных не затянешь пряником?
2.2. Ну а зачем же ты выдирал отрывок из текста? Это вводит лишние заблуждения.
2.3. То есть до твоего уровня абстраеции можно опуститься, а до моего нельзя? Поэтому чтобы не определять уровень абстракции, я и предлагал тебе не сравнивать языки.
Так и высказывайся дальше я с удовольствием читаю. Если по теме я никогда не удаляю и не по теме тоже стараюсь отвечать. Раз мне пишут, значит я отвечаю.
На халяву раздают компилятор C++, а среда разработки это не компилятор! Подожди а зачем, тогда MS предлагает изучать VS и .NET в университетах. Каких программистов??? Тех, которые еще учатся в школе, институте... .NET уже 8 лет, большое распространение на desktop'е он не получил (пока), зачем тогда тратить деньги? Безопасность?
Я не сравниваю языки я сравниваю платформы! Платформы - это в полне нормальный уровень абстраеции. Не убедил, короче. Так я и не понял почему нельзя сравнивать две платформы.
В чем я отошел от темы? .NET что в вакууме существует?? ОС, программисты, IDE - это все очень связано с самой платформой. Короче все что я хотел сказать, что безопасность - не есть первоцель .NET.
pat
2pat
привлекать новых программистов смысла нет, заманить удасться единиц, а затраты максимальны :). большинство Java кодеров остануться на java и большинство сишников в linux остануться сишниками. их сложно перетянуть даже пряником. разые что золотым пряником.
2notez
я же не пойму программистов существует определенное количество??? Новых не появляется?
2Сергей
Михаил, а вы в курсе на каком ЯП создана платформа ДОТНЕТ? И если да, то насколько хорошо владете этим ЯП?
2мальчик из MicroSoft
Очень странно, что ты не пишешь в обратную связь мне на мыло
[qoute]Я лишь сказал, что MS кросплатформенные приложения не нужны...[/qoute] Тыж вроде говорил, что МС яву копирует? А Это уже расхождение.
2Alexo
Читай Маркса! не будет расхождений в 2 словах...
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.