@void_programmer

Какой язык программирования изучить новичку для написания GUI приложений?

Доброго времени суток! У меня есть знакомый которому 16 лет. Он хочет писать программы с графическим интерфейсом. До этого изучал немножко Pascal. Это показало что программирование ему интересно. Я посоветовал ему перейти на более актуальный ЯП. Выбираем между С++ и С#. Почитав отличия между этими ЯП (Так и не узнал существенной разницы. C# проще при изучении(+), заточен под msvs и microsoft(-), нет указателей(+)). Я сам начинал с С++ и сейчас изучение Java мне дается легко. Хоть С++ сложнее (как пишут на форумах) может все таки начать с него?
  • Вопрос задан
  • 14627 просмотров
Пригласить эксперта
Ответы на вопрос 9
NeiroNx
@NeiroNx
Программист
Python весьма неплох для всяких GUI, работаеет со многими популярными фреймворками(Qt,GTK,Kivy), не проблема нагуглить нужный код. И приложение можно легко перетащить под Linux(даже под андроед можно).

После освоения Python, можно приступать к освоению C++
Ответ написан
Nipheris
@Nipheris Куратор тега C++
Зависит от запаса времени и сил. Если знакомый имеет возможность учиться (уж в 16-то лет), то я бы советовал плюсы. Да, это достаточно хардкорно, но все-таки этот язык как средство разработки просто так никуда не денется, а C# после плюсов он выучит без проблем (когда он хорошо разберется в C++, ему самому захочется иметь для ряда задач такой язык, как C# или Java). Главное в том, что если он сможет дисциплинировать себя в рамках C++, и сможет писать работоспособные вещи, то будет знать, как вообще работает современное ПО, и для него любой другой язык будет просто инструментом, а не парадигмой.
Важно, чтобы у человека УЖЕ был опыт хотя в одном языке. Если он учил Паскаль - то пусть хорошенько все вспомнит, может даже первые пару недель еще с ним позанимается. Пусть вспомнит, какие есть основные алгоритмические конструкции, структуры данных подучит, вспомнит что такое указатели. И в это же время пусть начинает переходить на плюсы. Еще стоит поискать хорошую современную книгу для новичка - C++ язык очень разносторонний, разные люди на нем пишут очень по-разному, поэтому нужен некий "направитель". Потом, когда человек освоится, сам выберет стиль и инструментарий.
Если же знакомый слукавил, и еще совсем мало знает, то лучше начать с чего-то другого. Тут уже зависит от текущих интересов: если комп интересует как "железка", то лучше взять Си - будет "продолжение" Паскаля, если очень-очень охота быстро набросать формочку - то пусть берет C#.
Динамические языки вроде Питона новичку не советую, плохо дисциплинируют.
В плане инструментов Qt сейчас настолько крут, что даже под винду непросто выбрать: то ли его, то ли продвинутый, но сложный и слаборазвивающийся WPF, то ли противоречивый Windows Runtime.
Кстати, насчет того, что сложнее - C++&Qt или C#&WPF еще можно поспорить. В первом случае сложен язык, но довольно проста библиотека, во втором - язык проще, но с WPF надо реально разбираться, чтобы им полноценно пользоваться.
Ответ написан
DmitryITWorksMakarov
@DmitryITWorksMakarov
В свое время когда я начинал программировать с QBasic`а и TurboPascal`a, особых вариантов куда дальше развиваться не было: С++. Реальный язык для решения реальных задач.

Для работы с GUI в Win логичным продолжением было Delphi и С++Builder. MFC от M$ был настолько корявый (по моему мнению), что даже смотреть в его сторону не хотелось.

Затем меня надолго унесло в сторону микроконтроллеров и там С/C++ мне помог в работе наиболее полно: быстрые программы, полный контроль над памятью - то, что нужно.

Потом, мне опять понадобился GUI. Как раз .NET и С# к этому моменту поборол свои детские болезни. С# мне показался очень цельным языком и легким в обучении. С С# я наиболее полно разобрался с ООП (в С++ я с ООП как-то плавал: не складывалась цельная картина). Сейчас C# продолжает развиваться. Это современный язык. Есть много задач, для которых он идеальный инструмент. Впрочем С++ не отстает и современные спецификации тоже включают в себя практически все новинки. Но все равно С++ сложнее: есть куча способов запнуться на ровном (как минимум с точки зрения С#) месте, муторная работа с памятью.

Сейчас при работе .NET с С# иногда возникает необходимость работать со старыми библиотеками, написанными на С++. В .NET есть такой язык как С++/CLR, который с одной стороны умеет работать с .NET, а с другой стороны спокойно работает с "чистым" С++ и становится спасительным мостиком в таких случаях. Кроме того, пару раз мне приходилось реализовывать в С++/CLR сложные, с вычислительной точки зрения, задачи. Сейчас правда вижу, что можно тоже самое было сделать не выходя за рамки С#, но в С++ это получилось все равно сделать проще.

В общем, в моем случае мне сильно помогло, что я начинал с С++. Но работаю я все же в основном в C#. Как бы не получилось так, что начав с С#, как с более простого, вашему знакомому будет потом сложновато в редких задачах, где понадобиться навыки работы в С++.

Совет, наверное, стоит сделать такой: изучайте С# для GUI, попробуйте для развлечения поковыряться с микроконтроллерами: там где реально нужно будет самому на С++ писать. Можно, например, для ардуино на с++ писать: и паять не нужно ничего, и стоит недорого. Не скетчи, а именно разобраться как с С++ работать.

А еще смотрите другие языки: JavaScript, Python, функциональное что-нибудь. Главное чтоб мозги не костенели в какой-нибудь одной парадигме, а могли смотреть на задачу максимально широко.
Ответ написан
Комментировать
Delphi
122211_600.jpg
А так то все просто:
- онли винда => С#
- что то кроссплатформенное => или wxWidgets или html/css/js в браузере
Ответ написан
Комментировать
@loxenehej
С++ - не тот случай, чтобы было целесообразно бороться с языком,
когда есть C# c прекрасными инструментами для написания GUI под Windows.

Если хочется кросс-платформенности при максимальной производительности - можно и С++, но если нет специальных требований, то это тупиковый путь, весьма затратный и в настоящие время малоцелесообразный.
Ответ написан
Комментировать
@alexey_abramov
Qt если под C++. Перешел с билдера на Qt в апреле, сделал свой первый САПР для предприятия(на конкурс молодых специалистов) за 2 месяца. Кстати даже без использования формочек, мне удобнее через gridlayout все размещать)
Сейчас создаю в свободное время для себя игры, начинаю делать клиент-серверные ПО, и другие небольшие приложения.
Словом впечатления - супер, супер, супер, всем рекомендую, Qt это очень круто
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ну опять двадцать пять.....
JS JS JS
Ответ написан
Комментировать
@dponyatov
быстрый костыль Python+wxPython, параллельно копать в сторону веб-подхода: локальный http-сервер на Python + JS и GUI в браузере.

Достоинства второго варианта
1) масштабируемость на любое количество одновременных пользователей: логика отрабатывается на одном сетевом узле (про полноценный вариант с LAMPy-сервером пока не говорим), при этом обслуживая любое количество клиентов/рабочих мест.
2) платформенно-независимость, причем автоматически получаем (минимальную) поддержку мобильных клиентов через любой браузер на телефоне, правда только в онлайн режиме.
Ответ написан
Комментировать
@ChymeNik
Если GUI только под Windows - однозначно C#+WPF.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы