Стоит ли сосредоточиться на разработке десктопов или узнать больше о разработке веб-приложений?
Позвольте немного представиться.
- У меня есть 7 лет опыта работы с C++ (большинство MFC), 1 год C#.NET и 2 года опыта Java.
- Я мало знаю о веб-приложениях, то, что я делал и делаю, это приложения для Windows.
Я начинаю делать некоторые (второстепенные) (внештатные) побочные проекты в последние полгода и использую C# в основном потому, что он более "быстрый", чем MFC. Но, похоже, на этом рынке больше веб-проектов, чем настольных. И я не чувствую себя хорошо, пока я не знаю, веб-разработки.
Итак, я должен коснуться новой веб-страницы, поданной для меня, или просто сосредоточиться на настольном приложении, но узнать больше, например, Python, или Frameworks/Libraries, такие как Qt или Boost?
6 ответов
Я чувствую, что все больше людей / компаний перемещают свои проекты в Интернет. Моя компания, например, добавила множество веб-приложений, так как я был там. Другой яркий пример этого - Microsoft (да, даже они), предоставляющая веб-версию Office, своего флагманского продукта.
Всегда будут потребности в настольных приложениях, но я вижу больше веб-проектов в будущем. В любом случае, всегда полезно узнавать что-то новое.
РЕДАКТИРОВАТЬ: О, и вы ничего не теряете, зная о "настольных" процессов. Вы можете заниматься программированием на стороне сервера, даже если это веб-интерфейс. То есть, другими словами, не помешает и дальше расширять свои знания в этой области.
Скорее всего, еще много лет будет рынок настольных приложений. Тем не менее, веб-разработка, кажется, заняла большую долю рынка разработки из того, что я вижу. Я бы порекомендовал определенно ознакомиться с веб-разработкой, поскольку определенно не повредит увеличить количество навыков, которыми вы обладаете, даже если вы никогда не прекращаете писать настольные приложения.
Поскольку у вас есть опыт работы с C#, вы можете рассмотреть возможность работы над ASP.NET. Или, если вы чувствуете необходимость освоить новую технологию, возможно, стоит рассмотреть такую среду, как Ruby on Rails.
Я бы действительно посоветовал заняться веб-разработкой - как вы сказали, есть еще много проектов веб-приложений - и вы уже знаете C#.NET и Java, и оба эти языка имеют действительно хорошие API / Framework для веб-разработки. ASP.NET для C# и Java-сервлетов /JSP.
Сначала я предлагаю изучить немного базового HTML-кода, чтобы узнать, как отображаются страницы, а затем попытаться создать динамические версии на выбранном вами языке. Затем я изучил бы некоторые другие веб-технологии, такие как CSS/Javascript/ некоторые библиотеки Javascript, - а затем я начал бы смотреть на фреймворки, основанные на основах на языке по вашему выбору.
Да, и еще несколько предложений - есть веб-фреймворки, основанные на компонентах, а не на запросах - у вас может возникнуть соблазн изучить их как ярлык для веб-разработки, поскольку большинство утверждает, что разработка в них похожа на разработку для настольных компьютеров. Я бы на самом деле этого не предлагал - так как на практике вам действительно нужно знать, как работает веб на более низком уровне, чтобы разрабатывать пользовательские компоненты, включать в себя то, чего не делает инфраструктура, или отлаживать их, когда что-то идет не так, даже когда используя эти рамки. Если вы прыгаете прямо в вас, вы можете потеряться / запутаться довольно быстро.
Microsoft Office 2010 будет иметь онлайн-версию. Для меня это переломный момент для веб-приложений. Приложения Office являются важным лакмусовым тестом, поскольку, как только вы можете использовать Office в Интернете (что уже давно было в случае с Документами Google, но Office имеет важное символическое значение), вы можете делать большинство вещей, которые волнуют большинство пользователей.
Настольные приложения не умрут, но я определенно думаю, что они будут занимать все больше и больше места сзади.
Я настоятельно рекомендую вам прочитать, как Microsoft проиграла API War, если вы еще этого не сделали. В этом посте особенно удивительно то, что он был написан в 2004 году.
Я искренне верю, что за исключением, возможно, операционных систем и браузеров, все будет веб-приложением в течение следующих 10 лет. Сказав это, позвольте мне уточнить, что под всем, что я имею в виду, все, что а) включает в себя некоторый пользовательский интерфейс и б) может быть гарантировано безопасным.
Приложения с пользовательским интерфейсом в какой-то момент всегда будут нуждаться в бэкэнде, который на каком-то уровне потребует кода, который не взаимодействует с людьми и не выполняется через HTTP. Я всегда напоминаю себе, что такие вещи, как "cat" в Unix, на самом деле являются программами, которые вызывает ОС, а не просто функцией, встроенной в ОС. MySQL будет не веб-приложением (насколько я знаю), а приложением, которое поддерживает веб-приложения. Мы можем прийти к моменту, когда эти приложения будут полностью разработаны через веб-интерфейс, написаны, проверены, загружены и вызваны через браузер, но на каком-то уровне они все еще работают за кулисами.
Что касается второго пункта, касающегося гарантированной безопасности, я очень легко могу представить, что крупная корпорация или государственное учреждение выполняют 95 процентов своей повседневной рутины с помощью веб-приложений, но при этом требуют выполнения определенных операций с высокой степенью защиты на машине, непосредственно связанной с каким-либо мейнфрейм, после прохождения через прохладные двери со сканами сетчатки, а что нет. Или просто потому, что они не могут рисковать перемещением определенных критически важных приложений в Интернет из-за страха того, что это может привести к потере наших данных в процессе.
Но если оставить в стороне эти две вещи, я искренне верю, что все будет основано на сети. С развитием Web-сервисов и XML в целом станет возможным не только получать доступ к нашим данным и взаимодействовать с ними, но и подключать наши пользовательские приложения к другому приложению и расширять это взаимодействие дальше и в любой среде, которую мы хотим.
Это как реклама Apple: "Для этого есть приложение". За исключением случаев, когда люди получат реальную картину, это будет не приложение, написанное для вашего iPhone, а URL-адрес."Для этого есть сайт".
Я рекомендую изучить структуру Lift. Он так же прост в использовании, как и Rails, и основан на статически типизированном языке для JVM, Scala. С точки зрения вашего опыта, Scala должен быть средним и легким для изучения, и вам, скорее всего, будет удобно с ним, чем с динамическим языком.
На мой взгляд, у вас есть хорошие шансы быстро его освоить, много узнать о передовых практиках в веб-разработке и даже немного расширить свои горизонты программирования.