Довольно легкий синтаксис по сравнению с java — в чем подвох обучение python?
Изучаю java. Сейчас балуюсь на уровне освоения парсинга сайтов, подтягиваю html and css. В планах еще сервлеты, spring, hibernate. С SQL игрался, писал много уровневые запросы собирая из нескольких таблиц.
Попала мне в руки книжка по питону. Блин, как там все проще, именно синтаксис. Это правда так? Почему тогда многие говорят что как и джаву до уровня почти мидл его учить год? В чем подвох? Для устройства на первую работу я так понимаю нужно еще Django Selenium Html CSS и SQL. Мне получается чтобы претендовать на позицию разработчика нужно подтянуть django and selenium правильно понимаю? Синтаксис просто после джавы и учить то нечего.
Так вот вопрос. Посоветуйте для дальнейшего лучше все же додавить джаву и стать джедаем? Или перейти на питона? И сколько в случае моих навыков уйдет примерно времени на обучение django and selenium? Спрашиваю в смысле возможности дальнейшего роста, актуальности языка, и так далее.
Простой 2 комментария
питон и ява это разные инструменты для разных целей
И разница в них не в синтаксисе, а в том что Ява это 100% ООП и она строго типизирована
непосредственно синтаксис у них отличается буквально отсутствием скобочек в питоне и то что у него динамическая типизация
===
я яве больше денег (в кровавом энтерпрайзе), в питоне проще стартануть. я вот учил три года яву целенаправленно, даже джуном поработать успел. в итоге сейчас основной язык у меня питон 😉 хоть я его и не особо люблю после явы
А с устройством на работу не подскажете как дела обстоят? Сложно найти первую работу?
И сколько примерно времени уходит на хотя бы поверхностное освоение основных фреймворков за которые уже платят?
Вам надо быть внимательнее с терминами. Python тоже 100% ООП и тоже строго типизирован. Отличие Python от Java в том, что в Python динамическая типизация, а в Java — статическая.
Евгений, у меня язык не поворачивается назвать Python 100% ООП. даже если он реально позволяет реализовать стандарные ООП фишки, то после явы это выглядит какойто профанацией
Игорь, «хоть я его и не особо люблю после явы» Вам больше ява по душе?
Вы имели дело и с одним и с другим в плане разработки. Что бы вы посоветовали первым учить, все же питон или ява. Ваше мнение?
Игорь, Я не знаю где там профанация. Вполне себе ООП язык, продвинутее некоторых других ООП языков.
Большинство сравнений языков на этом пункте даже не останавливаются, потому что тут и обсуждать толком нечего.
Большинство сравнений концентрируются на динамической типизации, так как это считается основной причиной ошибок.
Честно говоря, я не знаю. В своей практике я бы не сказал, что основная причина ошибок — динамическая типизация. Но так как я уже лет 15 пишу исключительно на Python, может быть у меня изменилось бы мнение, если бы я начал писать на языке со статической типизацией.
Евгений, ну из-за ооп сущности явы, программы там строятся по другому, интерфейсы, абстрактные классы, фабрики объектов и т.п. в питоне это тоже можно делать, но вы так делаете?
Игорь, во-первых, это все либо есть в Python, либо тривиально реализуется. Есть даже больше ООП фишек, например, метаклассы, которых в Java нет (во всяком случае, когда я в последний раз имел дело с Java, не было).
Во-вторых, не все паттерны (такие как фабрика, например), имеют смысл во всех языках. Паттерны очень часто неразрывно связаны с языками, в которых их впервые изобрели. Например, паттерн Singleton не имеет никакого смысла в Python, но это не делает Python не объектно-ориентированным языком.
Но вообще, все это поверхностные различия. И тот и другой язык — императивные, объектно-ориентированные.
Евгений, я не буду спорить, вопрос был в чем они различаются
различия в том что на яве не пишут так как пишут на питоне, а на питоне не пишут так как на яве, несмотря на то что и там и там можно делать одно и тоже
и там где обычно на яве пишут огромную обвязку, на питоне пара строк. просто так принято. хотя никто не мешает на яве написать также
Игорь, на Java мешает написать статическая типизация, в частности. Например, если в Python я сначала написал класс:
А затем мне понадобилось, чтобы количество ног было динамически вычисляемым, то я могу просто написать:
class Bird: @property def legs(self): return random.randint(1, 10)
И это не поломает код, который пользуется моим классом. А в Java такое изменение сломает код пользователей. Поэтому и пишутся тонны бойлерплейта, начиная с геттеров-сеттеров, заканчивая фабриками и многим другим.
Дело не в том, что один подход — это настоящий ООП, а другой — нет. Дело в том, что многое из того, что вы приводите как аргумент в пользу «настоящего» ООП — это просто преодоление особенностей языка (со статической типизацией проще сделать не получится).
вы привели пример того что разница лишь в том что синтаксис доступа к переменной класса и к методу в питоне одинаков, а в java надо писать скобочки
странно это объяснять, но доступ к переменной класса снаружи без геттера-сеттера в яве не приянято делать не потому что «скобочки мешают» если вдруг приперло переменную в метод превратить, а для уменьшения количество ошибок и вообще чтобы полиморфизм работал ожидаемо. а не «»тут у нас переменная и ней ничего не надо, а вот тут метод и надо родительский класс трогать при изменении»
Игорь, извените что влажу в дискуссию. Но не подскажете как получилось так что вы ушли с джавы джуна в питонисты?
ADUMA, позвали в проект с хорошим повышением ЗП несмотря что на тот момент опыт в питоне был существенно ниже явовского
Игорь, а какие библиотеки фреймворки, стоит изучить чтобы увеличить шансы получения первой работы на питоне? И может знаете ресурс где собраны описания основных подгружаемых модулей и методов их, что то типа как у джавы Oracle.
ADUMA, Я учил Django и в данный момент подтянул Flask, мне кажется этого вполне будет достаточно для начала
а ресурсы, я пользовался сайтами этих фреймворков, там вполне доступно все описано.
Игорь, как думаешь? Ознакомившись и сделав пару тройку проектов на джанго с использованием базы данных допустим SQLite (посгрес заколебала, пароли слетают), github, знанием нескольких паттернов проектирования MVC, Singleton, и еще что нибудь, добавив туда тестирование, реально устроиться тысяч эдак на 80?
Проекты я имею в виду допустим сделать что то вроде сайта, магазина, свое резюме (простенький сайт визитка), и допустим для разнообразия пару игруль на гит хаб забабахать.
Игорь, тостер не прислал уведомление о вашем ответе, или я его не заметил. Нет, дело не в скобочках. Геттеры-сеттеры нужны в Java потому что, если в самом начале не сделать свойство с геттерами-сеттерами, то потом это сделать уже не получится. Поэтому приходится заниматься предварительной оптимизацией (что является корнем всех зол, как известно), и на всякий случай добавлять совершенно бойлерплейтные геттеры-сеттеры для каждого свойства. Чтобы потом, если вдруг понадобится, можно было добавить динамическое поведение.
Ни скобочки, ни полиморфизм здесь не при чем. Просто один язык более динамический, чем другой. Кто-то это считает недостатком, кто-то достоинством, но это точно не вопрос из плоскости какое ООП более настоящее.
спешу огорчить, трейни уже обязан знать ЯП полностью. И сколько он его будет учить — никого не интересует
А для мидла требуется опыт
от 5 минут, до бесконечности