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