Здравствуйте.
Существует проблема выбора языка программирования.
Я понимаю, что язык программирования лишь инструмент. По этой причине я более подробно опишу мои задачи.
Прежде всего отмечу, что я знаком с основами популярных языков программирования, знаком с ООП. То есть начинаю не с полного нуля.
Я хотел бы заниматься разработкой настольных приложений, мобильных приложений, веб приложений.
Ещё мне интересны встраиваемые системы, машинное обучение и робототехника. Но я понимаю, что за месяц, пол года до этого дойти трудно, и помимо программирования, нужны знания в других сферах. Потому это не близлежащие перспективы.
Например интересно, как работает медицинское оборудование, как работает сканер отпечатков пальцев, как работает база с отпечатками, передача с сканера в программу и т.д.
Я определил для себя 4 языка программирования.
C++. Гигант, на котором можно разработать все. Тем более, вышеперечисленное.
Однако, разработка проектов на C++ как правило происходит в больших командах разработчиков, да и от новичка до первой программы со смыслом уйдёт больше времени, чем в других языках программирования.
C#/Java. Я не вижу смысла изучать и тот, и другой язык программирования, и выбираю 1 из них.
Java меня привлекает кросс-платформенностью. Все же нельзя сказать, что Java плохой язык программирования, если на нем были разработаны такие вещи, как Одноклассники, IDE от JetBrains, и даже игры. Minecraft начали разрабатывать еще при Java 7. Если тогда это было возможным, то я представляю, какие возможности можно получить с Java сегодня.
Встраиваемые системы возможны с Java. Давайте не будем забывать, что марсоходы работают на Java. Хотя мне говорили, что это эффективнее с C, так как занимает меньше оперативной памяти.
C# привлекает меня синтаксисом. C# язык программирования, на котором я разработал больше всего кода. Он манит своей простотой.
1 мой знакомый разработчик попробовал Android Studio с Java и Xamarin с C# и сказал:
***
Вы можете создавать как мультиплатформенные приложения, так и приложения, специально предназначенные для Android. Во втором случае у вас есть объектная модель, очень похожая на ту, что была в Java, потому что Xamarin охватывает почти каждую библиотеку Android Java. Это означает, что вы можете прочитать пример проекта на Java и затем легко найти C# эквиваленты используемых классов и методов. Еще одним плюсом является то, что разработчики Xamarin не просто скопировали все из Java, но отредактировали его таким образом, что вы можете использовать встроенные функции Android с красивыми именами в C#. Это, конечно, немного меняет API, но если вы знаете C#, вы можете легко предсказать, как.
Я не знаю, как это понятно, поэтому приведу простой пример того, что я имею в виду.
Это код Java для вызова метода при нажатии кнопки:
activateButton=findViewById(R.id.activateButton);
activateButton.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
activateButton_Click();
}
});
Представьте, что в вашем приложении около 20 кнопок и вы хотите реагировать на их нажатия. Это мой любимый аргумент, когда я критикую Java.
Для сравнения, здесь то же самое в C# Xamarin, ActivButton в данном случае okButton, но функциональность та же:
okButton=FindViewById<Button>(Resource.Id.okButton);
okButton.Click+=okButton_Click;
Вот почему я люблю C#.
***
Однако, в C# есть проблемы. Встраиваемые системы не так возможны с C#, как с Java, ну и проблемы стабильности. Вчера был Silverlight, сегодня его нет и т.д.
Python. Классный и одновременно ужасный.
Классный из-за простоты. Ты быстренько можешь составить небольшую программку, и она будет работать!
Классный из-за универсальности. Ты можешь использовать Python во многих областях.
Ужасный из-за ООП. Вы видели инкапсуляцию в Python? Если да, то вы понимаете. Если нет, лучше вам ее не видеть.
Ужасный из-за производительности. Пока нет крупных серверов, это нормально. А дальше, без хороших библиотек, хорошие сервера невозможны без гибрида с C++.
Спасибо, что есть Django.
Кроме того, что я хочу заняться изучением языка, который сможет решать мои задачи, в будущем я хотел бы работать с этим языком.
Что вы можете мне посоветовать? Как сделать правильный выбор?
Заранее благодарен!