5 ответов
Поделиться

Если не знаешь, с чего начать, то выбирай Python. Он лучше всего для обучения, чистый синтаксис и минимум уродств.

В реальной жизни на Питоне пишут: 1) сайты, веб-сервисы, любые вещи на стороне сервера, 2) разные научные штуки. Если потом захочешь заниматься чем-то другим – все языки похожи.

А если уже знаешь, что конкретно ты хочешь делать, то не теряй время и начинай это делать. Смотришь, чем ты собираешься заниматься: серверные штуки/десктопные приложения/мобильные приложения. Смотришь, какие в этой области популярные технологии. Выбираешь одну из них, и технология диктует тебе выбор языка, библиотек, среды разработки.

Например, в случае iOS: технология – собственно iOS и без альтернатив только средства разработки от Apple, языки Swift/Objective C. В случае с сервер-сайдом свобода выбора гораздо больше, но самый популярный набор – Django+Python+любая база данных. В случае десктопных приложений для Windows – технология .NET, язык C#.

Что не нужно делать:

  1. Читать ответы студентов.
  2. Уделять много внимания выбору языка. Все популярные языки похожи, много труда уходит на изучение новых технологий и новых задач: на сервере и на Android может быть одна и та же Java, но переобучиться с одного на другое более трудоемко, чем было бы узнать новый язык.
  3. Вгрызаться в устаревающий ООП или низкоуровневое программирование, чтобы стать "настоящим программистом".
4
0

Начал неплохо, а кончил за упокой

0
Ответить

На питоне ещё пишут мелкие скрипты.

>>А если уже знаешь, что конкретно ты хочешь делать
Человек ещё не начал изучать программирование. Пока изучит, желания у него тысячу раз поменяются.

>>Вгрызаться в устаревающий ООП или низкоуровневое программирование, чтобы стать "настоящим программистом".

Каким образом хоть что-то из этого устареет? ООП почти везде, причём хорошо работает и выполняет свою задачу. А низкоуревные штуки никуда никогда не исчезнут.

0
Ответить

Я бы побоялся утверждать по поводу третьего пункта. А кто для вас тогда песочницы писать будет, если не будет таких как я ? (Это я про низкоуровневое программирование.)

А к тому-же. Это самое трудное, что есть. Если нет конкретной цели - можно начать со сложных вещей. Чтоб потом остальное понималось быстро. После плюсов мне не составляет особых трудностей писать веб сервисы на Java. Зато попробуйте с Java перейти на плюсы. Но это моё ИМХО. Мне так легче, для меня так логичней. Но все люди разные.

0
Ответить
Ещё 3 комментария

Я начинал с C/C++, и начать "со сложного" или "со старого" мне показалось не лучшим опытом.

Объясню, почему.

Python отражает состояние современного программирования:

  1. Время программиста стало почти всегда дороже времени компьютера.
  2. Область применения низкоуровневого программирования стала очень узкой.
  3. Хардкорное ООП уходит.

Этими трендами вдохновляются новые языки: например, Go, Swift, Kotlin.

Если бы я подходил к C++ уже со знанием, что кроме какого-нибудь небольшого нативного модуля для Node.js или Андроида я на нем ничего не буду писать, мне было бы не так беспокойно.

Или если бы я читал про ООП зная, что оно не держит большую часть своих обещаний (banana and the jungle problem, fragile base class problem, и так далее).

После этого я бы знал, зачем, что, и в каких случаях мне может быть нужно от C++.

А спуститься на уровень ниже всегда можно, и в C/C++, и даже написать ассемблерную вставку.

Так ли оно "сложно" на самом деле, если совсем честно? Сложны непосильные задачи, решаемые неподходящими инструментами.

0
Ответить

Что такое "хардкорное ООП"?
В Питоне тоже ООП. Даже больше: там даже функции являются объектами.

>>banana and the jungle problem, fragile base class problem
По-моему, это идёт от неправильного понимания наследования. Если следовать SOLID, то эти проблемы не слишком существенны.

0
Ответить
Ещё 1 комментарий

Хардкорное ООП это C++ и Java: языки времен дикой моды на ООП. Принудительная статическая типизация, нормальная поддержка только одной ООП-парадигмы, куча паттернов, классов и иерархий классов в любой непонятной ситуации. Масса библиотек и фреймворков в таком духе.

Это добро разносят:

  • Книжки про C++/Java для начинающих
  • Угоревшие по ООП преподаватели, которые захватили пик моды на ООП

Редко кто из них рассказывает, однако, почему после C++ в Java то же наследование сильно урезали, а из Go его вообще выкинули вполне уважаемые люди. И за пределами UI-фреймворков его лучше бы избегать.

У Питона гораздо более адекватный mindset, он и сообщество вокруг него не индоктринируют новичка одной единственной парадигмой.

0
Ответить
Прокомментировать

И.

Питон -- на сегодня основной скриптовый язык, на нём очень хорошо писать прототипы он совершенно необходим для работы с данными и технологиями, которые принято называть "Искусственный интеллект".

С++ наряду с Java и С# -- основное средство разработки больших программных комплексов да и вообще сколь-либо крупных программ.

3
0

ИИ можно писать, например, на R. Я слышал, он даже удобнее :)

0
Ответить

Лично мне R тоже нравится, но, к сожалению и Tensorflow  (для сетей) и sklearn (для всего остального) -- это Python и ни разу не R

0
Ответить

Ну, к примеру, xgboost есть и там, и тут.

0
Ответить
Ещё 2 комментария

А в xgboost что-то помимо градиентного бустинга разве есть? Поглядев описания вообще не стал изучать фреймворк, т.к. по мне жизни нужны и нейросети, и всякие svm-подобные штуки.

0
Ответить

xgboost и есть очень эффективный и маленький пакет с градиентным бустингом.

0
Ответить
Прокомментировать

И то, и другое, и ещё что-нибудь.

Ты должен быть программистом, а не "программистом на", соответственно должен иметь широкий выбор инструментов, чтобы выбирать их под задачу, зная их характеристики.

А так, из плюсов:
Python:

1) быстрота разработки
2) красивый и удобный синтаксис
3) очень мало надо думать о низкоуровневых вещах вроде памяти
4) куча всего готового прямо в языке

С++:

1) быстрота
2) кроссплатформенность (если программа хорошо написана)
3) явная типизация
4) больше свободы благодаря возможности работать на низком уровне.

3
-1
Прокомментировать

Конечно же Java

Строгая типизация помогает не дать коду серьезного проекта не превратиться в кучу говна.

Управление памятью делает разработку быстрее чем в С++ и уменьшает количество ошибок. Просто устраняя класс ошибок.

Ну и ... вы же не хотите попасть в рабство к одному монополисту (по этому не C#)

Антон Жулитовотвечает на ваши вопросы в своейПрямой линии
0
0
Прокомментировать

Все просто, 

если research - то Python,

если develop - то C++,  

если R&D, то C++/Python

на Python хорошо проводить быстрое моделирование, чтобы проверить некоторые вычислительные идеи, так как они могут дать быстрый ответ - нужно или нет двигаться в этом направлении - либо подготовить какой-либо научный отчет. Также Python может быть хорош, когда нужно быстро реализовать небольшую программу, не требующую большой производительности и кодовой поддержки, такой типичный микросервис, например, программа, которая будет опрашивать оборудование раз в секунду и писать в лог / БД его текущее состояние. 

Разработку сложной пользовательской системы на Python, по-видимому, не сделать, так как будет сложно проектировать и поддерживать архитектурные решения, а также расширять и масштабировать систему, про создание интерактивного приложения я вообще молчу. Для высокопроизводительных приложений реального времени python также значительно продует C++. 

Собственно, комбо, это R&D - когда нужно реализовать какой-то программный продукт (либо  решение для продукта), который на первых стадиях непонятно как именно делать и нужны исследования. Тогда, начинают с моделирования на скриптовых языках (Python/R) и когда готов прототип - переносят (либо интегрируют) его на промышленное приложение (C++ / C# ) 

Антон Климовотвечает на ваши вопросы в своейПрямой линии
3
-3

Разработку сложной пользовательской системы на Python, по-видимому, не сделать

Почему это? Берешь какой-нибудь Django или другой веб-фреймворк и делаешь веб-приложение.

То, где проседает производительность (а это очень малая часть кода), переписываешь на чистый C и включаешь как пакеты.

И разрабатывать это будет намного проще чем на C++. И с точки зрения бизнеса тоже плюс: можно нанимать более дешёвых питонистов.

А вот на C++ будет дольше идти разработка, что оправдано лишь если система требует очень высокой производительности (игровой движок, CAD, браузер, виртуальная машина и т.п.).

0
Ответить

Фреймворки какие-то есть, конечно, но речь даже не об этом. В Python есть ООП, но оно не так сильно развито как в стандартных ООП языках типа Java. Соответственно,  _правильно_  проектировать программы на нем сложнее. Опять же отсутствие явной типизации. То есть для крупных задач структурировать объектно-ориентированные связи в Python, чтобы в будущем легко было добавлять новые свойства или делать какие-то изменения, на мой взгляд, весьма непросто. Опять же большие проекты в Python нужно будет отлаживать намного дольше, чем в той же Java

на Python нет проблемы написать небольшую программу (микросервис) как я уже писал либо может даже что-то простое с GUI (в этом не эксперт), но сделать реально большое пользовательское приложение ( типа Microsoft Word ) - довольно большой challenge для Python программистов 

0
Ответить

Ну, Sublime Text написали же. Ещё Dropbox, Youtube и многое другое. Это всё не "реально большое пользовательское приложение"?

Для десктопа, в целом, он не так удобен, как C#, например, но удобнее C++, имхо.

0
Ответить
Прокомментировать
Ответить