Почему в сорок лет я решил поменять профессию и стать программистом Python

На прошлой неделе я ходил на собеседование, и основной вопрос ко мне был такой: «Почему вы решили поменять профессию и стать программистом?». В конце собеседования человек, который проводил собеседование — руководитель отдела перспективных разработок одной IT компании — прямо сказал: "… я вас не понимаю, вы претендуете на позицию, которая явно ниже вашей и по уровню оклада, и по должности, да в общем и не такая интересная, как ваша работа сегодня..."

Предыстория


Программирование мне нравилось всегда, еще в девятом классе, когда мы с друзьями забрели на областную станцию юных техников, в компьютерный класс и остались там до окончания школы (это был 1993 год, домашних компьютеров у нас не было, а там стояли IBM386).

Поступил я, правда, в авиационный институт, т.к. самолеты в тот момент казались интереснее. По окончании института (2001г.), получив красный диплом и приглашение в аспирантуру, пять лет разрабатывал системы управления авиационными двигателями, защитил кандидатскую, подучил английский. И тут вплотную встал вопрос — а что дальше? Авиация тихо умирала. По ощущениям — перспектив не было, все было глухо.

Я решил, что нужно что-то делать, что-то менять! В общем, разместил резюме в интернете. Как бы это ни было странно моим коллегам, через три дня у меня случилось первое в жизни собеседование, была предложена хорошая зарплата и очень интересная работа. Компания, в которую я попал, занималась испытаниями и измерениями, и эта сфера меня привлекла надолго: новое оборудование, интересные, часто уникальные задачи, много командировок, общения с разработчиками оборудования, с отечественными и зарубежными поставщиками, неожиданные сложности и нетривиальные решения — в общем, было интересно! Это всегда интересно, когда создаешь что-то новое.

В карьерном плане — тоже все хорошо, поработал и инженером, и ведущим инженером, и руководителем технического отдела, и исполнительным директором, немножко побыл соучредителем нового бизнеса.

И вот теперь, как мне кажется, снова пришло время что-то менять.
И снова, как и в предыдущий раз, все спрашивают: Почему? Зачем? Всё ведь хорошо!

Попробую объяснить свою позицию


Чуть более чем десять лет я проработал в сфере разработки испытательного оборудования.

Основной момент состоит в том, что когда человек работает над каким-либо вопросом, он обычно разбирается в этом вопросе, потом начинает разбираться в смежных вопросах, т.к. они влияют на его результат и потому, что ему просто любопытно, как это работает. Со временем меняется оборудование и программное обеспечение, но основные принципы остаются неизменными. Можно перейти в другую компанию, там будет другой коллектив и немножко другое оборудование, но по сути — всё тоже самое.

Можно попробовать построить в этой сфере свой бизнес — это дает несколько иной взгляд на вещи, но в текущей рыночной ситуации у такого бизнеса будет очень мало перспектив, и их количество в этой сфере неуклонно снижается.

Можно продолжать ходить на работу и попытаться реализовать себя в каком-нибудь хобби и пять раз в неделю, вставая по утрам, осознавать, что сегодня будет навсегда потерян еще один день — мрачноватая перспектива!

В общем нужно что-то менять! Но что и на что? — вот в чем вопрос!

Если посмотреть на программирование, то это направление представляется очень интересным:

  • Оно с одной стороны — совершенно новое для меня, т.е. в нем можно учиться и развиваться: выбор ПО, задач, проблем практически не ограничен, от молекулярной биологии, физики и химии до верстки сайтов. Мне кажется, тут есть возможности и есть перспективы.
  • С другой стороны — это направление, в котором у меня есть некоторый опыт: Fortran в институте, LabView — последние три года на работе, Си и Free Pascal (немножко для общего развития), PHP + WordPress + HTML+CSS — вполне рабочий сайт получился.
  • Честно говоря, мне просто нравится кодить, и я люблю когда моя работа имеет результат: сделал — заработало!

Судя по тому, что я вижу на Хабре и в интернете — разработчик должен быть очень опытным и молодым, желательно лет 23-27, после 35 — найти работу становится сложнее. Скажу честно, это кажется немного странным! Конечно, общеизвестно, что с возрастом интеллектуальные способности деградируют, но с точки зрения медицины — возрастом считается 70-80 лет и никак не 30-40. Другое дело, что человеку, которому двадцать лет, можно меньше платить. Но я не претендую на позицию разработчика с 20-летним стажем.

Прелесть технологий разработки программного обеспечения, на мой взгляд, в том, что они быстро развиваются. Это значит, что многое из того, что было актуально десять лет назад, сейчас безнадежно устарело. И это значит, что очень многое зависит от того, насколько быстро и эффективно мы умеем учиться.

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

Мне нравятся слова, адресованные Кирком Шупом молодым разработчикам на встрече в Яндексе:
Найдите вещи, которые вас мотивируют, пишите много кода и читайте много кода. Меня вдохновляет строить вещи, которые просуществуют много лет после того, как я их сделаю, и которые не сломаются даже после изменений, которые в них внесут люди, не понимающие их.
Когда я начинал программировать, смотрел на опытных разработчиков и думал, что через 10 лет я догоню их текущий уровень, но они уже уйдут вперёд на 10 лет. Через десять лет я понял, что на самом деле полностью их догнал. Технологии двигаются вперёд, так что мне не пришлось изучать старые, а новые я узнавал одновременно с ними.

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

Рассмотрим финансовый вопрос. Да, при смене работы я существенно потеряю в деньгах, но кое-что при этом и приобрету:

  • Во-первых программист не так сильно привязан к месту работы географически, а это значит, что при желании я смогу работать на удаленных заказчиков;
  • Во-вторых, по моей оценке уровень дохода скорее всего через пару лет сравняется с моим текущим уровнем;
  • В третьих, рынок программного обеспечения неуклонно растет, а значит растет спрос и на специалистов, а вот производство оборудования в РФ непрерывно сокращается (это безусловно мои личные субъективные ощущения, не претендующие на какую-либо объективность), а значит работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!

Но языков программирования так много, почему именно Python — скажете вы.

Существует даже мнение, что не нужно учить Python первым языком.

Получилось так, что лет пять назад один мой друг, увлекающийся Linux, очень настоятельно мне его порекомендовал, были новогодние праздники и было время попробовать разные дистрибутивы, в общем последние пять лет я использую Debian. А дальше все просто: bash — это наше все, но хотелось возможности написать что-то более сложное: попробовал Си, по рекомендации того же друга попробовал Lazarus, немного повозился с PostgreSql. Потом был почти годовой перерыв, а потом, попробовал Python.

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

Еще одна причина для меня выбрать Python — это то, что я считаю его более перспективным языком с точки зрения участия в различных технических, научных и просто интересных проектах, чем например PHP.

Сейчас, в свободное от работы время потихоньку начал изучать machine learning, а на прошлой неделе сходил на первое собеседование.

Получилось несколько длинно, но я хотел максимально подробно объяснить свои мотивы, и размышления.

В данный момент вопрос актуален для меня, и мне будет интересно получить мнения и комментарии читателей Хабра.
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 274

    +44
    Вопрос!

    Причем тут хабы «программирование» и «python»? Про программирование нет ничего, а про питон… И про питон, ничего!

    Замените программирование на «сборщик мебели», а питон на «корпусную мебель»… Мне кажется смысл особо не поменяется.
      +2
      Вопрос в чем?
      «Почему вы решили поменять профессию и стать программистом?»
      — этот?
        +7
        Я как раз месяц назад получил свою первую работу в программировании — а мне уже 31 год. Тоже, кстати питонистом, я в восторге от этого языка :)
        Желаю вам удачи!
          0
          А можно поподробнее описать опыт и процесс?
            0
            Опыт получения работы?
            Да всё достаточно стандартно — подготовил резюме, начал откликаться на вакансии, ходить по собеседованиям. Параллельно старался углублять свои знания и навыки в языке, фреймворках и смежных технологиях.
              +1
              Я, скорее, про «багаж», с которым Вас взяли. Участие в каких-то проектах, код на гитхабе? Что, вообще, кроме питона, понадобилось?
                0
                Ну, я до этого 6 лет работал в техподдержке/администрировании. Периодически возникали задачи, связанные с написанием кода, да я и сам старался в этом вопросе проявлять инициативу. Из завершённых более-менее весомых проектов у меня были: внутренний корпоративный портал (php+sql+js), пара внутренних веб-сервисов, один проектик, связанный с интеграцией с внешним сервисом. Ну и по мелочам — скрипты, простые запросы к БД.

                Кроме питона на собеседовании мне задавали вопросы на общее понимание того, как работает интернет, спросили, как бы я реализовал в БД хранение иерархического каталога и неориентированного графа, какие я знаю веб-фреймворки и ORM, задали пару вопросов по js и css.
                  0
                  Спасибо! Сам поглядываю туда же.
                    0
                    Пожалуйста, желаю удачи :)
            0
            А я первую работу программистом получил в 38 :) Не большое увлечение программированием помогло мне подняться по карьерной лестнице и в денежном вознаграждении.
            +4
            Расскажите лучше про «уникальные задачи», которые вы решали.
              –7
              Поскольку тема явно не техническая, позволю себе небольшой оффтоп: а что такого выдающегося все внезапно нашли в Питоне? Вопрос совершенно серьезный. Мне приходится иногда на нем писать небольшие вещи и пока впечатление скорее нехорошее.

              Претензии например:
              1) Быстродействие. Вижу разницу в два порядка даже с Явой, многие задачи на нем из-за этого невозможны в принципе.
              2) Значимые whitespaces. Финиш полный, пришлось настроить перед каждым запуском автозамену табуляторов на пробелы, чтобы не ругался.
              3) Куцый язык с велосипедным синтаксисом (отсутствие ++ и --, нормального for цикла, запрет пустых блоков и
              т.д.)
              4) Еще более куцая стандартная библиотека. Понадобилась обычная TreeMap — вперед шерстить сеть на предмет чьих-то third-party.
              5) Какая-то каша с кодировками и строками, постоянные encode/decode
              6) Еще больший финиш с ООП/функциями/классами: self явным параметром, приватные функции через имя…

              Полное ощущение, что имею дело с каким-то игрушечным языком двадцатилетней давности.
                –18
                Так это и есть игрушечный язык. Для всяких небольших наколенных скриптов. Пере-bash/недо-С. Никто его для чего-то масштабного использовать не будет. Ну кроме тех, у кого совсем уже «питон головного мозга»:)
                • UFO just landed and posted this here
                    +11
                    Дропбокс после ухода Гвидо переписывает архитектуру на Go
                      +4

                      Уже переписали давно. И частично еще на Rust.


                      https://news.ycombinator.com/item?id=11283758

                        0
                        Плюс скриптовых языков в том, что можно быстро, на коленке, написать сервис\сайт. Да, когда проект развился, стал популярным и нагруженным — тогда можно хоть на Java, хоть на С++ переписать.

                        Я встречал в своей практике, что медленная скорость разработки на компилируемых языках очень сильно вредила старту проекта. Да и мало написать — надо постоянно реагировать на запросы пользователей.

                        А так — да, компилируемые языки работают быстрее, кто ж спорит то?
                          +1

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


                          На скриптовых языках в аналогичных условиях точно быстрее бы было?

                            –1
                            Я не знаю, быстрее ли получилось или нет — на то сослагательное наклонение указывает. Но вот читаемость кода явно страдает. На Питоне код был бы покороче и лучше читался бы (это мое мнение)
                              0

                              Ну, читабельность — вопрос привычки скорее, ИМХО, но куда уж короче? Там и так-то логики с гулькин нос.

                                0
                                Ммм, как то на заре интернета (1996) написал тучу кода на С — просто CGI приложение, которое форму показывало, принимало url-encoded строку, а потом выводило Hello %username%

                                Потом манной небесной показался Perl. Более ёмкий, но и более запутанный. Читаемость чужого кода стремилась к нулю.

                                Пробывал Java, но волею судеб там не было встроенной поддержки HTTP 1.1 (читай, нельзя было на одном IP делать несколько сервисов\сайтов). Ну и эта дурацкая тема — всё объект — ужасно.

                                Пробежавшись по всяким ASP и Coldfusion перешёл к PHP, в основном потому что легко было настроить всю связку Апач+mod_php+MySQL. Как язык, PHP может и не лучший, но средство разработки — вполне приемлемое. Читаемость — лучше, чем у Перла.

                                Но когда я перешёл в 2008 году на Python\Django — слезы радости текли по моей щетине. Компактный, читаемый, гибкий, мощный, продуманный и достаточно быстрый. Туча библиотек в комплекте. Лучшая документация! (чего тогда не хватало Руби и Рельсам)

                                Конечно, можно привыкнуть к любому синтаксису, но я выбираю тот язык, что более читаем. На текущий момент для меня это Python.
                                  +1

                                  Я видел код на питоне, но на мой взгляд, сильнотипизированные языки вроде хаскеля таки читабельнее и «поддерживабельнее».


                                  Как бы аналогичный код выглядел на питоне?

                                  0
                                  И кстати, а что делает код на гитхабе? Достает какую-то информацию из lasm.fm по артисту и обложку сохраняет?
                                    0

                                    Помогает обойти то, что в новой версии lastfm api (которая была выкачена пару лет назад, да) нет никаких средств получить фоточки исполнителя. Соответственно, получает запрос, говорит клиенту, какую страницу надо выкачать, клиент её выкачивает и отправляет обратно сервису, сервис выдирает ссылки на фотографии и возвращает список.

                            +1
                            Куда Гвидо ушел?, он вроде все ещё в дропбоксе.
                            Если бы дропбокс начал бы с Go изначально, он бы никогда бы не «взлетел».
                              +1

                              Этому есть какие-то другие причины кроме той, что язык Go начал разрабатываться примерно в том же году, что «зарелизился» Dropbox?

                        +5
                        а что такого выдающегося все внезапно нашли в Питоне?

                        Python позиционируется как простой и понятный язык и, вероятно, хорош для обучения (как первый язык).

                          –5
                          >> Python позиционируется как простой и понятный язык и, вероятно, хорош для обучения (как первый язык).

                          Согласен, это вполне возможно. Для абсолютного новичка он будет понятнее и легче в освоении. Но копнуть в глубину и начинается… Жаловался профессионально работающим с SciPy/NumPy, ответ был: главное при работе с Питоном — это как можно больше вынести в C++ :)
                            +9
                            главное при работе с Питоном — это как можно больше вынести в C++ :)

                            Это справедливо для многих языков, если область применения — жадные до гигафлопс расчёты.

                              +7

                              Не нужно забивать гвозди микроскопом. Если вам нужно получить абсолютный максимум производительности — не смотрите ни на питон, ни на джаву, ни на пхп, ни на джаваскрипт. Ваши языки — C и может быть C++/Rust. Однако, если ваша задача — внести интерактивность в web-страницу — Javascript (да, есть возможность писать на других языках и транслировать в JS, но ...). Python? Если твоя задача получить результат быстро (не в смысле быстрых рассчётов, а в смысле "на вчера", то Python здесь со своей экосистемой даст возможность этого достичь в кратчайшие сроки, а на C/C++ будете изобретать велосипед, в сотый раз изобретать пакетный менеджер/систему сборки/и прочие базовые утилиты). У большинства инструментов, которыми пользуется больше двух человек есть своя ниша, где они решают задачи эффективнее (быстрее/производительнее/безопаснее/...)

                                –2
                                Что ж тогда не в ассемблер сразу? ;) Потеря точности при работе с числами с плавающей точкой в С++ толком не позволяет даже с простыми бухгалтерскими вычислениями справиться. ;)
                                  0
                                  >>> главное при работе с Питоном — это как можно больше вынести в C++
                                    +1
                                    >>> Что ж тогда не в ассемблер сразу?

                                    -1? Вот интересно, кому мой комментарий мог не понравиться?

                                    Я, проггер с 21-летним стажем, тоже ныне, как и автор статьи, сорока лет отроду. Начинал с бэйсика на Корветах ещё в 1993 году. До 2005 года неплохо владел asm x86 и при работе с языками типа (Object) Pascal регулярно для критичных по времени исполнения рутин делал вставки на асме. Потом «забил».
                                    Да, Python (который мне лично очень нравится и по которому имею два сертификата), является интерпретатором. Да, он медленнее компиляторов. И что?.. Зато он проще в освоении. Понятнее в сопровождении чужих исходников и весьма продуктивен в плане скорости разработки.

                                    Автору статьи уважение за смелость, удачи и усидчивости! Главное, чтобы было желание продолжать учиться и работать над собой.
                                    К сожалению многие в нашем возрасте уже обленились вконец и ничего не хотят менять…
                                      +1

                                      Непонятно, как язык без статической типизации может быть понятнее в сопровождении чужих исходников.

                                        +1

                                        Меньше кода читать )

                                          0

                                          APL и его производные, наверное, в таком случае идеальны?

                                  +1
                                  Вот по чесноку, я не программист, а просто пробую баловаться и баловство мое начиналось толком с С#. Хотелось потом было начать писать для веб под django, но после си шарпа питон казался чем-то вообще неудобоваримым. Месяцок мучений и выбор таки ушел к ASP.NET.
                                  Хотя, если сейчас преподавание азов переходит с паскаля на питон, то тут ура.
                                    +1
                                    если сейчас преподавание азов переходит с паскаля на питон, то тут ура

                                    Ошибаетесь.
                                    Никлаус Вирт создавал своя ЯП с определенной целью — учить студентов программированию. Поэтому Паскаль так хорош для азов.

                                    Ну, а на практике всё зависит от преследуемой цели.

                                    Начиная учиться с Паскаль — человек научится программировать.
                                    Начиная учиться с Питон — человек научится писать программы на Питон.

                                    Небольшая, но разница есть.
                                      0

                                      Можно научиться программировать на примере Питона, а можно научиться писать программы на Паскале, но не научиться программировать.

                                        0
                                        Человека, научившегося на примере питона, практически невозможно заставить решать некоторые задачи.
                                        Например, матчить строку вручную. Потому что у него изначально есть регэкспы и прочее.

                                        Скажите, что оно ему и не нужно? Отчасти соглашусь. Но на собеседованиях в дев-компании для тех кто претендует на зп $2-3K очень любят давать классические задачки по поиску соответствий в строках, по сортировке и т.п. И не принимают решения с учётом особенностей языка… Как-то так.

                                        Но это, конечно не помешает заколачивать деньгу на джанге.
                                        –1
                                        И в каком месте «научится писать программы на Питон» не является «научится программировать»?

                                        PS если кто не знает: Питон вообще-то тьюринг-полный.
                                        @VolCh: можно научиться писать программы на Паскале, но не научиться программировать

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

                                        Программировать вообще можно на любом тьюринг-полном языке. Просто, некоторые языки лучше подходят для обучения, а другие хуже. Например, на Лого — можно учиться функциональному программированию, а вот ун-Лямбда, хоть и тоже является функциональным, для обучения не намного лучше брейн-фака.
                                          0
                                          умение писать программы на Паскале является умением программировать.

                                          Не все считают умение писать программы на каком-то языке равноценным умению программировать вообще. В частности я считаю, что в умение программировать входит умение алгоритмизировать решения задач, а писать программы можно и без этого, по готовым алгоритмам.

                                            0
                                            И в каком месте «научится писать программы на Питон» не является «научится программировать»?

                                            Я попытался комментарием выше свою мысль пояснить.
                                            Фишки языка расслабляют, научишься писать проги на чём-нибудь, а что у него под капотом и знать не будешь. Оно может и не надо, но иногда знание лишним не бывает.
                                              0
                                              Неадекватным фанатикам минуснувшим в Карму за сравнение ун-Лямблы с брейн-факом, не плохо бы сначала погулить что это такое https://zserge.wordpress.com/2011/01/26/unlambda-%D0%BC%D0%BE%D0%B7%D0%B3%D0%B8-%D0%BD%D0%B0%D0%B2%D1%8B%D0%B2%D0%BE%D1%80%D0%BE%D1%82/

                                              И этот язык уж точно для обучения новичков не годится (для сравнения Лого позволяет обучать ФП даже детей).
                                                0
                                                Гы. ;)
                                                Для тех, кто не интересовался, классический пример.
                                                Программа на языке Brainfuck, печатающая «Hello World!»:

                                                ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
                                                .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
                                                ------.--------.>+.>.


                                                http://ru.wikipedia.org/wiki/Brainfuck

                                                P.S. Для обучения язык ТОЧНО не годится. Он, и по названию даже судя, скорее, для любителей эээ… головоломок, если прилично говорить.
                                                  0
                                                  Ну Hello World на unLambda выглядит обманчиво безобидно:
                                                  `r```````````.H.e.l.l.o. .w.o.r.l.di

                                                  А вот программа, которая выводит числа Фиббоначи, выглядит вот так:
                                                  ```s``s``sii`ki
                                                  `k.*``s``s`ks
                                                  ``s`k`s`ks``s``s`ks``s`k`s`kr``s`k`sikk
                                                  `k``s`ksk
                                                    +1

                                                    Ну, для обучения тому, как работает машина Тьюринга, Brainfuck вполне сойдёт. Несмотря на свою эзотеричность, это не самый бесполезный ЯП.

                                                  –3
                                                  ОМГ…
                                                  Как научился в 1994, так и продолжаю писать на Pascal (правда уже лет 18, как перешёл на Object Pascal).
                                                  И «студенческость» Паскаля не сильно мешала мне в одиночку реализовывать части в весьма сложных коммерческих проектах. И не помешала мне освоить и использовать при надобности другие языки (asm x86, VB, C/C++, Java, Python, PHP и прочие).
                                                  Что за дискриминация языков? ;)
                                                  >>> Паскаль тоже является тьюринг-полным, а следовательно умение писать программы на Паскале является умением программировать.
                                                  Именно.
                                                  И, порой, это даже дело вкуса. Вот не нравился мне никогда Си-подобный синтаксис, поэтому не перешёл на Java или C#. А Python, кстати, понравился именно синтаксисом. ;)
                                                    +3

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

                                                      –3
                                                      Почему это? Обычно, редко кто учит эти языки по отдельности, чаще всего эти языки учат параллельно, по причин обратной совместимости между C++ и C.
                                                        0

                                                        Я уже писал в этой теме про "совместимость". Они не являются обратно-совместимыми ни в одну сторону, это два разных языка.

                                                          –2
                                                          Это если на них много и углублённо пишешь. А чаще всего C и C++ учат «чтобы знать», потому что это классика, и знание этих языков помогает лучше понимать языки от них производные. Так как на работе чаще всего используется какой-нибудь другой язык, а знакомство C и C++ просто полезно, если вдруг что-то понадобилось срочно исправить в коде на незнакомом языке происходящем от C/C++ :)
                                                            +2

                                                            Боюсь, что мы просто сильно по разному понимаем что такое "изучать язык".


                                                            В моём представлении от "иметь представление о базовом синтаксисе" и "быть способным читать и писать простой код" до "более-менее изучить язык" лежит ещё долгая дорога в несколько лет минимум с регулярной практикой на это языке с использованием соответствующей инфраструктуры, подходов и библиотек. Т. е. если человек 10 лет пишет на Си с классами, то к C++ он отношения почти не имеет.

                                                              0

                                                              Это извечный философский вопрос: Что значит "изучил язык"?
                                                              Вопрос этот не ограничивается языками программирования… и для естественных языков придумали такое понятие как уровень владения. И по факту с годами это почти не коррелирует. Точнее, очевидно, что для освоения языка на уровне С2 требуется несколько лет. Но обратное не верно, т.е. можно десятилетиями активно и успешно пользоваться языком, но не владеть им на уровне C2. Более того, практическая ценность такого уровня владения весьма спорна.
                                                              То же справедливо и для ЯП, изучить язык на уровне B2 достаточно для решения более 90% практических задач, вне зависимости от чьих-то представлений.

                                                                –2
                                                                То что Вы пишете — это уже профессиональное владение языком. А я имею в виду под «освоением языка» — достаточное знание языка, чтобы приступить к практической работе на нём.
                                                                  +1

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

                                                        0
                                                        не нравился мне никогда Си-подобный синтаксис, поэтому не перешёл на Java или C#

                                                        А мне наоборот синтаксис C очень понравился (а ещё больше понравился APL — жаль на нём не довелось писать).
                                                          0
                                                          Именно поэтому я и говорю, что синтаксис — дело вкуса. ;) А, как говорится, «о вкусах не спорят».
                                                          Если человек может в своей работе использовать тот «инструментарий», который ему нравится, то и работа будет более комфортной, имхо.
                                                        0
                                                        Да и, вообще, дискуссия потиху скатывается к холивару, а-ля «Pascal vs C++».
                                                    +1

                                                    На Python пишут в университетах. Поэтому на нем масса библиотек по математике, разным наукам, по ML. Масса отличнейших библиотек. Пишут эти библиотеки люди со степенями и мозгами. Как раньше в 80ые писали на том же Фортране. Поэтому среднее качество кода выше среднего по Джаве и СиШарпу, есно за пределами .NET библиотек.
                                                    Кроме того у него замечательные примитивы по работе с коллекциями. Вроде просто, но результат ощущается быстро и практически везде.
                                                    По поводу скорости. Везде (?), где она нужна, есть библиотеки, скомпилированные на С.
                                                    Минусы тоже есть. Меня достает то, что всегда надо выбирать 2 или 3 версию надо/можно использовать :)

                                                    • UFO just landed and posted this here
                                                        –1

                                                        Похоже те библиотеки пишут всё-таки на C++ (а то и вообще это всё делается на основе какого-нибудь BLAS), а в Python просто прикручивают интерфейс — для популяризации, так сказать.

                                                          0

                                                          Откуда вы это взяли? Вы заглядывали в исходники исходники, например, netlib-blas, openblas, atlas? Там, если что, используются C, Fortran и чуток asm.

                                                      +16
                                                      1. Быстродействие. Не могли бы Вы поделиться списком задач, которые "на нем из-за этого невозможны в принципе".
                                                        2,3 — без комментариев.
                                                      2. Чем Вам не подошёл обычный dict? Хорошо, а OrderedMap?
                                                      3. Тут ладно, есть нюансы детских болезней и разницы веток 2.х и 3.х
                                                      4. Как это обычно бывает, у Вас просто сложилось своё определенное понимание ООП. Причём существование иных толкований Вы не принимаете. Откройте для себя толкование ООП от Алана Кея, будете сильно удивлены.

                                                      Ну и Вам, очевидно, Python кажется не удобным с точки зрения программиста на Java. Python/Java/Clojure/whatever — не плохой, он просто другой, со своими парадигмами и идиомами.

                                                        –4
                                                        1) Пример: пару дней назад нужно было посчитать коэффициенты похожести (similarity) для некоторого количества строк между собой. Для 3К строк это заняло на Питоне около 5 минут. Для 10K даже начинать не стал, перевел на Яву, сделало за секунды.
                                                        2) dict же не упорядоченный? Мне нужна была map с порядком на ней. По OrderedMap для Питона у меня поиск ничего не находит, уточните пожалуйста.
                                                        3) Да нет, иные толкования меня вполне устраивают. Их воплощение смущает, неудобно же.

                                                        >>Ну и Вам, очевидно, Python кажется не удобным с точки зрения программиста на Java.

                                                        Вряд ли, мне доводилось писать на языках от Бэйсика и Пролога до С++ и Матлаба. Просто Ява сейчас удобна тем, что соединяет достаточную скорость с мощной стандартной библиотекой. А так я за языки не держусь совершенно.
                                                          +3
                                                          2) Вероятно имелся в виду OrderedDict — Python3 OrderedDict
                                                            0
                                                            Ещё, в python 3.6 стандартный dict хранит порядок.
                                                              0
                                                              Ещё, в python 3.6 стандартный dict хранит порядок.

                                                              А можно ссылочку на источник?
                                                              Пример в документации https://docs.python.org/3.6/library/stdtypes.html#dict говорит об обратном.
                                                                +2
                                                                https://docs.python.org/3/whatsnew/3.6.html

                                                                The dict type now uses a “compact” representation based on a proposal by Raymond Hettinger which was first implemented by PyPy. The memory usage of the new dict() is between 20% and 25% smaller compared to Python 3.5.

                                                                The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon (this may change in the future, but it is desired to have this new dict implementation in the language for a few releases before changing the language spec to mandate order-preserving semantics for all current and future Python implementations; this also helps preserve backwards-compatibility with older versions of the language where random iteration order is still in effect, e.g. Python 3.5).

                                                                  0
                                                                  Насколько я понял, они изменили алгоритм работы со словарем, в результате теперь он не рушит порядок при работе, но гарантий сохранения порядка нет, то есть он явно нигде не хранится специально.
                                                                  + Самая интересная возможность упорядоченных коллекций — работа со срезами и индексацией не реализовывалась, так что преимуществ у такого сохранения порядка не так много.

                                                                  The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon


                                                                  Аспект сохранения порядка в новой реализации рассматривается как деталь реализации и на него не следует полагаться.
                                                                    –1
                                                                    так что преимуществ у такого сохранения порядка не так много.
                                                                    Они не делали намеренно сохранение порядка, это побочный эффект при переходе на новый алгоритм. Но как профит — можно юзать стандартный dict вместо OrderedDict (помимо более оптимальной работы самого dict)

                                                                    Гарантий порядка нет потому что если вы запустите программу в 3.5 или более старых версиях (совместимость 3.x), то будет работать не так.
                                                              0
                                                              >> 2) Вероятно имелся в виду OrderedDict — Python3 OrderedDict

                                                              Его я видел, но там не натуральный порядок элементов, а порядок добавления, что совсем из другой оперы. В итоге я использовал sorteddict отсюда http://www.grantjenks.com/docs/sortedcontainers/

                                                              +9
                                                              Для 3К строк это заняло на Питоне около 5 минут. Для 10K даже начинать не стал, перевел на Яву, сделало за секунды.


                                                              Код покажите? Интересно.
                                                                –9
                                                                Код мне пришлось бы сейчас выдирать и оформлять, чтобы запустился отдельно, что вряд ли имеет смысл. Если интересно, посмотрите на модуль difflib, тут похожая тематика.
                                                                  +11
                                                                  Скорее всего вы просто использовали, что называется, «метод в лоб». В Пайтоне есть особенности хранения данных, и соответственно для того чтобы обрабатывать данные эффективно, надо это учитывать. Для этого действительно надо погружаться в Пайтон глубже чем «за пару часов почитаю по диагонали описание до того неизвестного мне синтаксиса и напишу скриптик».

                                                                  Если конкретизировать — подозреваю что у вас вышло так что при выполнении вашего кода происходило огромное количество ненужных аллокаций памяти. К примеру если вы в цикле, после проверки каждого символа каждой строки, использовали что-то вроде
                                                                  new_line = old_line[1:]
                                                                  
                                                                  что на каждый символ заново аллоцировало еще один участок под почти всю строку.

                                                                  Собственно для прочесывания строк и/или массивов байтов — стоит использовать memoryview (https://docs.python.org/3/library/stdtypes.html#memoryview) над нужным вам контейнером. Оно, используя все тот же синтаксис
                                                                  new_line = old_lint[1:]
                                                                  
                                                                  — не будет делать новых аллокаций, и является неким аналогом адресной арифметики из C/C++.

                                                                  Ну и кроме того, в язык встроены другие специальные средства быстрой потоковой обработки данных (в основном взятые из функционального программирования). Они используются вместо циклов и ускоряют обработку несколько раз (бывает что и на порядок). Опять же это требует не самых базовых знаний языка (т.е. надо приложить хоть какие-то усилия и: или книжку почитать, или документацию посмотреть, или же курсы пару-месячные по начальному владению языком пройти).
                                                                +6
                                                                1. Если вы делаете выводы о эффективности работы питона исключительно на примере написанного вами кода, то, возможно, проблема не в питоне?

                                                                4. У питона весьма богатая библиотека в тех сферах, где он популярен. Возможно, вы просто пытаетесь использовать его не по назначению? Да, далеко не всё интересное входит в стандартную библиотеку, но никто не видит в этом проблемы. Возможно, ваша проблема просто в том, что в питон-сообществе принято другое отношение к использованию сторонних библиотек, а вы пытаетесь судить по меркам джава-сообщества? Сильно подозреваю, что в сообществе питонистов просто сильнее развита культура открытости и обмена наработками. Поэтому у создателей языка просто не было необходимости раздувать стандартную библиотеку.

                                                                5. К третьему питону уже никакого encode-decode не осталось, вместо множества кодировок — один юникод.

                                                                2, 3, 6 — претензии к форматированию, синтаксису, реализации ООП, функций и классов — это в значительной степени вкусовщина и дело привычки. У меня, например, синтаксис джавы вызывает отторжение из-за чего я в своё время не стал её заниматься, хотя и считал, что она весьма перспективна в плане карьеры. Но при этом я с пониманием отношусь к людям, которым джава нравится. Среди моих хороших друзей есть джависты, и я уважаю их выбор.
                                                                  +1
                                                                  1. Охотно допускаю и был бы очень рад. Вбил сейчас «Python performance» в Гугл и получил вот эту страницу: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
                                                                  Тоже алгоритмическая задача, те же самые два порядка разницы к C++/Java (исходный код прилагается). Хм…

                                                                  4. Отсутствие одной из основных структур данных в стандартной библиотеке меня действительно удивило (и заставило потерять часа два на поиски, сравнение и установку стороннего кода). Культура открытости — дело хорошее, разумеется.

                                                                  Что касается синтаксиса, форматирования и пр. — дело тут не во вкусовщине. Мне все равно, ставить скобочки или двоеточие, писать else if или elif. Дело в неудобствах — например, отлаживая алгоритм, я часто комментарю/вытаскиваю обратно строки. Но Питон почему-то не дает оставить пустой блок. То есть мне нужно дополнительно вписывать туда каждый раз «pass», дурная работа же. Почему нет инкрементов, чье отсутствие размножает строки вида a+=1? Это ведь простейшие вещи, самые основы, на которые приходится наталкиваться постоянно и которые крадут время.
                                                                    +3
                                                                    У питона весьма богатая библиотека в тех сферах, где он популярен. Возможно, вы просто пытаетесь использовать его не по назначению? Да, далеко не всё интересное входит в стандартную библиотеку, но никто не видит в этом проблемы. Возможно, ваша проблема просто в том, что в питон-сообществе принято другое отношение к использованию сторонних библиотек, а вы пытаетесь судить по меркам джава-сообщества? Сильно подозреваю, что в сообществе питонистов просто сильнее развита культура открытости и обмена наработками. Поэтому у создателей языка просто не было необходимости раздувать стандартную библиотеку.

                                                                    Спасибо, рыдаю. Стандартная библиотека python'а, как многие отмечали, это место куда слоныбиблиотеки приходят умирать. Там есть огромное нагромождение кода, который будет жить там вечно ради совместимости, хотя для python'а это не такая священная корова, как для java.


                                                                    Но вообще в python std странностей выше крыши. Например, есть парсер для json'а, но он не умеет парсить в потоке (т. е. json.read(file_like) внутри сделает просто json.reads(file_like.read())). Или есть работа с датами, но она не работает с датами до 1900 года в 2.7, но работает в 3.2+.


                                                                    С точки зрения использования внешних зависимостей я бы не рекомендовал обобщать java-мир. Он очень разный. Кто-то ради IOUtils.closeQuietly притащит commons-io в проект, кто-то завендорит jackson/netty/resteasy/weld/whatever целиком.

                                                                    0
                                                                    Если вы не нашли ничего про упорядоченный словарь, то и namedtuple рекомендовать не буду. Но порекомендую.
                                                                    0

                                                                    к п.2: Например, я не вижу аналога метода TreeMap.floorEntry(key) в Python'е. Класса OrderedMap вообще не нашёл, а OrderedDict — это по-видимому аналог java.util.LinkedHashMap, а не TreeMap.

                                                                      0
                                                                      Логично, он возможен без полного перебора только для SortedMap и аналогичных. В стандартной библиотеке Python таких структур нет.
                                                                    0
                                                                    1) Быстродействие. Вижу разницу в два порядка даже с Явой, многие задачи на нем из-за этого невозможны в принципе.
                                                                    И для java многие задачи невозможны*. «Инструмент под задачу» ©.
                                                                    А скорость разработки, в среднем, гораздо ниже чем с питоном, например веб-сервисов. Да и по быстродействию может проиграть питону если для этой задачи в нем использовать либу на С/С++.

                                                                    А ещё, помню, java проиграл питону по скорости выполнения чуть ли не на порядки из-за медленного старта.
                                                                      +1
                                                                      Если так сравнивать, то питон рвет в клочья c++ из-за компиляции.
                                                                        0
                                                                        Сравнивалась не скорость компиляции, а время работы готового приложения т.е. для С++ был готовый бинарник.
                                                                          +1
                                                                          Так у java, как и у c# медленный страт из-за jit компиляции. По крайней мере в c# это можно поборать.

                                                                          Или я что-то не так понял?
                                                                        0
                                                                        Скорость разработки веб-сервисов? Вы начинаете сравновать не языки, а фреймворки, django или flask, несомненно клевые и удобные, но и у java есть, например, Spring boot. Так что выбор на чем запилить веб сервис — дело привычки и вкуса.
                                                                          0
                                                                          Речь не о привычке, а о скорости разработки, если вы считаете что дело не в языке, а во фреймворке — возьмите любой веб фреймворк под С или лучше asm и посмотрите (почувствуйте) во сколько раз больше вы потратите времени на написание аналогичного веб-сервиса.
                                                                          • UFO just landed and posted this here
                                                                          0
                                                                          >>что такого выдающегося в Python?

                                                                          например, на питоне реализуемы весьма заковыристые задачи контентного анализа в реальном времени (жёсткий код на C или плюсах, обвязка полегче на питоне)

                                                                          питон *хреново* декомпилируется; уверяю, это плюс гораздо чаще, чем может показаться (с радостью окажусь неправ, но дайте ссылок на нормальный декомпилятор)

                                                                          я пробовал много языков, мне питон приглянулся (хотя это эмоциональное утверждение), однако уже более лет 10 погоду делает не язык, а библиотеки и компоненты;)
                                                                            0
                                                                            >> например, на питоне реализуемы весьма заковыристые задачи контентного анализа в реальном времени (жёсткий код на C или плюсах, обвязка полегче на питоне)

                                                                            Это называется «каша из топора» :) Если код на C/C++, то обвязку на чем угодно сделать можно. Для математики в Matlab удобно, например.

                                                                            >> питон *хреново* декомпилируется; уверяю, это плюс гораздо чаще, чем может показаться

                                                                            Серьезно есть потребность в декомпиляторе питона? Если да, и еще не существует, то можно написать,- пару месяцев как-нибудь получится выделить. Но очень сомнительно…
                                                                              +1
                                                                              Удобно, это смотря с чем сравнивать и как использовать. Прелесть Python в данном случае в универсальности.
                                                                              У меня, например, задачи всплывают из очень разных областей: и обработка теста, и графики, и тяжелые числодробилки, и математика. И везде Python оказывается, если не лучшим вариантом(в учетом самописных и обёрнутых библиотек), то по крайней мере более чем удобным. И позволяет не учить другие инструменты на каждый случай(таких как R, matlab, которые почему-то не пошли от слова совсем), даже Mathematica в некоторых не сложных случаях можно заменить.
                                                                                –1
                                                                                обвязку на чем угодно сделать можно

                                                                                поверьте, в той задаче, о которой я здесь не расскажу, не на чём угодно:) питон доказал отличную переносимость по платформам, работу в реальном времени и очень неудобную реверсную инженерию; для задачи это оказалось очень важно


                                                                                можно написать,- пару месяцев как-нибудь получится выделить

                                                                                провокационное заявление; хотя нет ничего невозможного, но восстановить исходный код (как в Java или .NET) вряд ли удастся

                                                                              • UFO just landed and posted this here
                                                                                +1
                                                                                Минусят, но ведь действительно, питон это утилитарный, а не бизнес язык. К пунктам выше я бы добавил отсутствие явной типизации что приводит к аду сопровождения или портирования.
                                                                                При этом, на мой взгляд, нарушается главный принцип питона — явное лучше неявного.

                                                                                Мнение основано на попытке портировать более-менее крупный проект с питона на .NET, при переносе любого метода приходится разворачивать всю цепочку вызовов чтобы понять что за объект передавал автор оригинальной библиотеки.

                                                                                Да, в новой версии можно указать типы, но кто из питонистов будет это делать?

                                                                                А в качестве скриптового языка для разовых задач он прекрасен, это да.
                                                                                  0
                                                                                  Я бы вот спросил, что проще учить с нуля — Python или C#?
                                                                                    0
                                                                                    Я пробовал и то, и то, питон показался проще и гибче. Но эти языки как велосипед и санки, видимо мне больше нравится велосипед. Если язык первый, наверное, питон будет проще. Если язык не первый, то смотря какой был предыдущий. С це наверное проще перейти на цешарп, а с какого-нибудь пхп — на питон. Но это моя субъективная теория.
                                                                                      0

                                                                                      C PHP проще будет перейти на C#, если на PHP писал в современном стиле, а не в стиле 90-х. Субъективно, конечно же.

                                                                                      +1

                                                                                      C# с нуля проще учить, он гораздо более последовательный (т.е. содержит меньшее кол-во WTF? в стандартной библиотеке). А от Python у новичка останется каша в голове, без чёткого понимания что зачем и почему так.

                                                                                        0
                                                                                        По личному опыту — С#. Явная типизация дает понимание, что передаешь, что возвращаешь, чем являешься. Но с другой стороны, проще учить с нуля тот язык, по которому есть задачник и решебник. Ну или преподаватель. С нуля это просто маст хэв.
                                                                                      +1
                                                                                      Неожиданный обрыв повествования в статье. Собственно, как раз когда вроде ближе к сути (заявленной в заголовке) автор подошёл, все и закончилось.
                                                                                        0
                                                                                        Хм. Вроде описано же все: нравилось программирование, текущая профессия теряет актуальность, а в новую довольно низкий порог вхождения.
                                                                                        –3

                                                                                        Удивительно, но сегодня я увидел ВК рекламу "Как выучить программирование после 40". И тоже Python. Это наводит на странные мысли о связи этих статей.


                                                                                        Трудно понять мотивацию к.т.н., директора, претендующего на уровень junior'a.


                                                                                        работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!

                                                                                        Хороший инженер может быть настолько не уверен в своих способностях?


                                                                                        У автора хочется поинтересоваться — как успехи? Обычно считается, что чтобы стать профессионалом в какой-либо области, требуется 10 лет в сфере. Вы готовы потратить 10 лет, чтобы выйти на уровень даже ниже вашего текущего?

                                                                                          +5
                                                                                          работу программиста через двадцать лет я скорее всего найду, а вот работу инженера-конструктора — вряд ли!
                                                                                          Хороший инженер может быть настолько не уверен в своих способностях?

                                                                                          Мне кажется, там речь скорее о неуверенности в перспективах развития отрасли… Посмотрите, для примера, как за предыдущие 30 лет полностью развалили лёгкую промышленность, сколько закрыли НИИ, фабрик и т.д.

                                                                                            0
                                                                                            10 лет, это чтобы стать гуру наверное, особенно если мы говорим про IT, где обмен опытом происходит намного быстрее, чем в других отраслях. Если брать в расчет «правило 10000 часов» — то где-то 4-5 лет будет вполне достаточно чтобы стать высококвалифицированным профессионалом.ИМХО.
                                                                                              0

                                                                                              Да, именно "правило 10000 часов" я и имел в виду.

                                                                                              0
                                                                                              Хороший инженер может быть настолько не уверен в существовании области применения своих профессиональных навыков через двадцать лет в доступном ему по разным причинам географическом окружении.

                                                                                              P.S. Автору всяческие мои пожелания двигаться вперед и не бояться радикальных перемен. Как минимум, это новый жизненный опыт, который вряд ли будет бесполезен.
                                                                                                0
                                                                                                Хороший инженер может быть настолько не уверен в своих способностях?


                                                                                                Если ты узкоспециализированный инженер, то не в способностях дело а в отсутствии спроса на твою профессию.
                                                                                                У меня сходная проблема, выслужился из простого монтера до инженера высшей категории, и толку? Если ты специалист в узкой отрасли которая к тому же умирает? Куда идти? Через 10 лет она точно загнется, и куда идти уже в 50 лет? В 40 лет есть хоть шанс вписаться в струю.
                                                                                                Автор правильно написал, сейчас нет профи, все имеют средний уровень, по причине того что технологии очень быстро развиваются, и если ты был в чем то профи 10 лет назад, то сейчас ты один среди многих, так как за 10 лет успело появится много нового и даже успеть отмереть.
                                                                                                  0
                                                                                                  сейчас нет профи, все имеют средний уровень, по причине того что технологии очень быстро развиваются

                                                                                                  Профи есть. Это те, кто за определённое время успевают столкнуться с разными технологиями (которые, возможно, отмирают), изучить разные области computer science, и они отличаются от не-профи тем, что могут грамотно выбрать технологию для проекта, или успешно применить некоторые принципы из совершенно другой области. Естественно, для этого нужно изучать новое.


                                                                                                  Из-за быстрого развития и отмирания технологий ИТ-специалисты больше развиваются "в ширину", а не "в глубину". Это не значит, что хороших спецов вообще нет.

                                                                                                –2
                                                                                                Рассмотрим финансовый вопрос. Да, при смене работы я существенно потеряю в деньгах
                                                                                                Интересно, что по этому поводу думает семья?
                                                                                                  +4
                                                                                                  В нормальной семье поддержат решение сменить профессию с надоевшей на вдохновляющую, даже если это связано с каким-то падением уровня жизни (в разумных пределах)
                                                                                                    +1
                                                                                                    Нормальная семья — это какая? :) Если говорить языком абсолютных цифр, то расходы в Москве (а автор отсюда), то на семью из трех человек, чтобы жить более-менее (ипотека/съем квартиры, хватало на еду, шмотки средние, отдых пару раз в год, образование ребенку), то надо 200 000 р, т.е. каждый взрослый должен получать по 100 тыс. рублей. Это при условии, что ребенок один и он большой (>7 лет), т.е. может оставаться дома один и не надо его в 6 часов забирать с продленки или из детсада.
                                                                                                    Junior питон разработчик столько получает? Если да, и жена получается столько же — то прекрасно. Если жена получает больше, то вообще замечательно — можно даже никуда и не устраиваться — рисковать и уходить во фриланс.
                                                                                                    А если жена не работает или получает 50 000 р? Тогда все эти светлые мечты о программировании разбиваются о быт…
                                                                                                    PS Просто наболело :)
                                                                                                      +1
                                                                                                      то на семью из трех человек, чтобы жить более-менее (ипотека/съем квартиры, хватало на еду, шмотки средние, отдых пару раз в год, образование ребенку), то надо 200 000 р

                                                                                                      Есть подозрение, что уж квартирный вопрос у автора решён. И вообще ваше "более-менее" — это уровень заметно выше среднего.

                                                                                                        +1

                                                                                                        В Москве многие живут более-менее и с двумя детьми, далеко не у всех доход 200к+ на семью.

                                                                                                          +2
                                                                                                          Если в каждой «нормальной» семье будет только один ребёнок, то с каждым поколением население будет уменьшаться вдвое. Конечно из-за того что продолжительность жизни человека больше чем максимальный детородный возраст это не сразу становится заметно.
                                                                                                            0

                                                                                                            Уровень безработицы понизится, вопрос с тем, куда лишних людей девать по мере автоматизации, не поднимется, одни плюсы!

                                                                                                            0
                                                                                                            Можно же еще и подрабатывать. Было бы желание.
                                                                                                      • UFO just landed and posted this here
                                                                                                          0
                                                                                                          Пробовал Python некоторое время назад — язык очень понравился. Правда сейчас я изо всех сил налегаю на Java. Что до возраста и своего рода возрастной дискриминации в IT (а может и не только там) — полностью согласен с наблюдениями автора.

                                                                                                          Ваша ситуация, уважаемый shutovds, лично мне очень понятна, поскольку нахожусь в похожем положении. Поэтому поддерживаю Ваше решение обеими руками и желаю удачи. У Вас всё получится. А программировать — это такой кайф…
                                                                                                            –18
                                                                                                            Ну выбор разумный. Си и плюсы вам уже не потянуть, там порог входа очень высокий. Питон простой, там можно за пару недель приловчиться делать несложные вещи. Смотрите сразу в сторону веба. Работа страшная, монотонная, одни и те же вещи придётся делать, писать одни и те же модели и одни и те же рест сервисы, зарплаты низкие, перспектив никаких — это суровые реалии.

                                                                                                            Машин лёрнинг это не питон, это суровый матан, к тому же на питоне там прямо никто не сидит и не пишет, там опять же нужен хороший си и вообще нужно как говорят «шарить в матане», читать статьи (в день по 2 статьи это норма).

                                                                                                            Я бы на самом деле попробовал, да, вы попробуйте поработайте программистом, может и поймёте, что авиация это не плохо на самом деле.

                                                                                                            Просили мнение — вот оно.
                                                                                                              +1
                                                                                                              Как у вас всё мрачно :)
                                                                                                                +11
                                                                                                                Порог входа в Сях вполне нормальный, может быть чуть-чуть выше, чем везде.
                                                                                                                Другое дело, что потолок где-то в стратосфере.
                                                                                                                  +1
                                                                                                                  вот вы человека даже не видели, а так лихо за него решили, что потянет, а что нет
                                                                                                                  выбор неразумный, Python никогда не будет хорошим первым языком
                                                                                                                  Яндекс и Mail.ru запилили на одном известном сайте бесплатные курсы по плюсам, уровень такой, что умственно-отсталые школьники справятся, инженер и подавно
                                                                                                                  по сям круто поможет стенфордский курс «programming paradigms» (есть на их youtube канале)
                                                                                                                  было бы желание
                                                                                                                  p.s. авиастроение в России устроено так, что его нет
                                                                                                                    0

                                                                                                                    а можно ссыль на курсы? Помоложе чем автор, да и не авиаконструктор,
                                                                                                                    но все же примерно в схожей с ним ситуации.Задумываюсь, что лучше
                                                                                                                    учить.
                                                                                                                    Был бы признателен за ссыль

                                                                                                                    0
                                                                                                                    По поводу курсов от Яндекса и мэйла — имеете в виду их курсы на степике? С них можно начинать обучение, если ты даже не особо понимаешь названия отдельных уроков и совсем не программист?
                                                                                                                      0
                                                                                                                      да, именно их
                                                                                                                      начинать с c++, возможно, будет тяжело, но зарядившись компилятором и терпением, можно превозмочь
                                                                                                                      если вообще не имеете представления о программировании, попробуйте посмотреть на Ruby, мне он показался очень простым и наглядным (хотя это очень субъективно, могло повлиять то, что я уже немного знал Perl, которым вдохновлялся автор Ruby), кроме того многие современные языки (например Swift от Apple) вдохновлялись Ruby, и будет несложно перейти
                                                                                                                      обязательно попробуйте SoloLearn: Learn to Code (там можно быстренько пройти курс молодого бойца по разным языкам и сравнить)
                                                                                                                        +1
                                                                                                                        Про Ruby конечно же слышал, как и про фреймворк Ruby on Rails, детище бывших 37signals. Но если и Ruby лёгкий, и Python лёгкий, почему же вы советуете первый и отказываете второму? Да, я прочитал комментарии, тут каждый второй не поленился описать плюсы Python, и каждый первый при этом — его минусы, но они есть и у Ruby.
                                                                                                                        С другой стороны, как я понимаю, оба этих ЯП по сравнению с С++ и тем более с С дают новичку возможность очень быстро научиться собирать свой первый конструктор — это как Лего против советских металлических :) А в дальнейшем всё равно лучше изучить C++. Но интегрировать Python и C++ вроде как легче, чем Ruby и C++, тем самым быстрый старт верхом на питоне и дальнейшая интеграция его с С++ даст большую эффективность, чем бег по «рельсам» за этим локомотивом в лице С++:) Если я где-то заблуждаюсь, то срубите одну из этих трёх сосен :)
                                                                                                                        SoloLearn установил, спасибо, буду пробовать.
                                                                                                                          +2
                                                                                                                          Ruby не Rails, Rails не Ruby. Rails — классный фреймворк, который существенно повлиял на веб. В Python тоже есть свой RailsDjango. Но Ruby гораздо больше, чем Rails. Попробуйте поискать видео, в котором автор rake рассказывает, как он написал аналог make на Ruby за 5 минут. Главный, но далеко не единственный плюс Ruby — писать на нём легко, приятно и естественно, что прямо сказывается на мотивации новичка.
                                                                                                                          В Ruby действительно всё является объектом, и вот такие штуки: 13.to_s.length.nil? помогают быстрее разобраться с ООП.
                                                                                                                          В Ruby изящно реализовано метапрограммирование (смогут все).
                                                                                                                          С точки зрения же C/C++ практической разницы между Python и Ruby нет.
                                                                                                                            0
                                                                                                                            Да, разницу понимаю, и про Django и Flusk я слышал. Видео rake не нашёл, но понял, что речь о компиляторе. Написать что-то новое и полнофункциональное за 5 минут — это круто, конечно.

                                                                                                                            Вы и моя любознательность заставили меня прошерстить документацию для того, чтобы понять, что же значит 13.to_s.length.nil?. Как я понял, to_s превращает 13 в строку, и всё это предназначено для выяснения, не нулевая ли (nil) длина (length) у 13, на что Ruby ответит False. В Python же за это отвечает
                                                                                                                             if len(13) == 0:
                                                                                                                                print('the list is empty')
                                                                                                                            
                                                                                                                            .
                                                                                                                            Если всё верно, то синтаксис Python мне почему-то кажется более понятным. Безусловно, если разобраться, то всё будет понятным, но я-то как раз не разбираюсь и это типа взгляд со стороны.

                                                                                                                            Господин Бешеная гиена (думаю, поймёте правильно с таким ником :)), я ни в коем случае не спорю — мне интересно говорить об этом, но не с кем) Вообще Хабр читаю уже лет 5, аккаунту уже 4 с лишним года, но мой первый комментарий — вам :)
                                                                                                                              0
                                                                                                                              mrobespierre, как я понял, и не говорил, что код на Ruby понятнее/красивее (ибо красота вещь субъективная). Он показал пример, демонстрирующий, что ООП в Ruby ярче выражен, нежели в Python. Да даже ваш собственный контр-пример это показывает.
                                                                                                                                0
                                                                                                                                А, ну тогда я что-то начинаю понимать. Правда, пришлось для этого прочитать основы ООП.
                                                                                                                                Судя по всему, под выраженностью ООП в данном примере имеется ввиду видимая структурированность 13.to_s.length.nil?, где, если я не ошибаюсь, 13 — это объект, to_s — метод, который отнесет объект к классу строк, length и nil — методы. Поправьте, если что не так.
                                                                                                                                Но вот осознать преимущество этого над тем же Python мне пока не дано :) Может, если только код так более читабелен и понятен?
                                                                                                                                Вообще, такие вот разговоры очень сильно мотивируют и подталкивают к изучению)
                                                                                                                                  0
                                                                                                                                  если всё упростить, то:
                                                                                                                                  1. в Ruby всё является объектом
                                                                                                                                  2. каждый стейтмент что-то «возвращает» в результате своей работы
                                                                                                                                  сложив всё вместе получим: 13 — это объект типа int и у него нет метода length, но последний есть, например, у string. метод to_s объекта типа int вернет совершенно новый объект типа string, чей метод length вернет нам снова int, у которого есть метод nil? (который есть вообще у всего в Ruby). преимущество становится очевидным, когда вы делаете сортировку в обратном порядке в Ruby с помощью array.sort!.reverse!, а в другом языке по-другому
                                                                                                                                    +1

                                                                                                                                    Пожалуйста, прекратите позорить Ruby своими примерами… Никто в здравом уме не будет так делать сортировку в обратном порядке.
                                                                                                                                    Для демонстрации цепочек вызовов прекрасно подходят ActiveRecord, Ransack и т.д., проще говоря, те случаи, где уместен паттерн Fluent Interface.

                                                                                                                                      0
                                                                                                                                      и что, насколько сильно опозорен Ruby, сколько литров крови смогут смыть этот позор?
                                                                                                                                      что не так с этой сортировкой? только будьте добры, придумайте что-то стоящее, а не чушь в духе «два прохода медленнее одного на 0.00001 секунды».
                                                                                                                                        +2

                                                                                                                                        Пфф, а что с ней так? Зачем делать то, что будет медленнее, когда сделать нормально не составляет никакого труда:
                                                                                                                                        array.sort! {|a, b| b <=> a}
                                                                                                                                        Зачем писать белиберду "13.to_s.length.nil?" в качестве примера? Или Вы поставили себе задачу показать, как не надо писать на Ruby?

                                                                                                                                          0
                                                                                                                                          Ну если вы пролистаете ветку вверх, то увидите, что мы обсуждаем хороший вариант первого языка для человека, которому интересны C/C++. Мой посыл был в том, что Ruby — как раз такой вариант. Примеры я пытался привести такие, чтобы даже не программист мог понять (т.е. просто знания английского достаточно для понимания кода, это ведь здорово для того, кто никогда не программировал, правда?). Вы, судя по всему, — рубист и могли бы сами привести примеры изящные и лаконичные примеры кода на Ruby (так чтобы две строки, а не куски Rails, который сишнику, наверное, не пригодится), но вместо этого вы постарались меня дискредитировать, указав на недопустимость сортировки массива из 3-х элементов в 2-х строчной программе в 2 прохода и подтолкнуть человека к Python. Хорошего дня.
                                                                                                                                            +2

                                                                                                                                            Ruby — неплохой вариант для начинающих. Тут я не спорю.
                                                                                                                                            Однако, примеры Ваши даже программистам не понять… Потому что они нелогичны! Посмотрите, в какой ступор Вы вогнали бедного Eudokimoff своим "13.to_s.length.nil?".
                                                                                                                                            Я уверен, что любой пример должен делать что-то осмысленное, ну например ASCII-табличку печатать:


                                                                                                                                            puts (32..127).map(&:chr).each_slice(16).map(&:join)

                                                                                                                                            или


                                                                                                                                            puts (32..127).map(&:chr).join.scan(/.{16}/)

                                                                                                                                             !"#$%&'()*+,-./
                                                                                                                                            0123456789:;<=>?
                                                                                                                                            @ABCDEFGHIJKLMNO
                                                                                                                                            PQRSTUVWXYZ[\]^_
                                                                                                                                            `abcdefghijklmno
                                                                                                                                            pqrstuvwxyz{|}~ 

                                                                                                                                            Это он сможет переписать на Python и сравнить… А код, напрочь лишённый смысла, нельзя сравнить с кодом на другом языке.

                                                                                                                                              0
                                                                                                                                              Как-то так, если поставить целью в одну строку )

                                                                                                                                              print('\n'.join([''.join([chr(x) for x in range(x, x+16)]) for x in range(32, 128, 16)]))
                                                                                                                                              
                                                                                                                                                0

                                                                                                                                                Ну, это Вы немного схитрили… заранее подготовив range.
                                                                                                                                                Аналог второго варианта на Ruby выглядит на Python так:


                                                                                                                                                import re
                                                                                                                                                print '\n'.join(re.findall('.{16}', ''.join(map(lambda x: chr(x), range(32, 128)))))

                                                                                                                                                А первый вариант, емнип, стандартной библиотекой Python не решается, придётся свою функцию писать для разбиения массива на чанки.


                                                                                                                                                P.S. В любом случае, однострочники на Python лучше даже не пытаться писать, это ни разу не его сильная сторона. Получается довольно страшненько и практически нечитаемо.

                                                                                                                                                  +1
                                                                                                                                                  lambda x: chr(x) можно заменить на chr, получится менее страшно:

                                                                                                                                                  import re
                                                                                                                                                  print '\n'.join(re.findall('.{16}', ''.join(map(chr, range(32, 128)))))
                                                                                                                                                  
                                                                                                                                                    0
                                                                                                                                                    получится менее страшно

                                                                                                                                                    И рекомендациям pep8 по длине строки соответствует.
                                                                                                                                                      0

                                                                                                                                                      Спасибо, отличное уточнение. Буду знать, что в Python тоже так можно сокращать.

                                                                                                                                                      0
                                                                                                                                                      Почему вы отдали предпочтение
                                                                                                                                                      ''.join(map(lambda x: chr(x), range(32, 128)))
                                                                                                                                                      

                                                                                                                                                      а не
                                                                                                                                                      ''.join([chr(x] for x in range(32, 128)])
                                                                                                                                                      
                                                                                                                                                        0

                                                                                                                                                        Я на Python не программирую, чисто на уровне чтения читабельного кода с ним знаком, поэтому просто взял вариант ближе к классическому набору map/filter/reduce. Хотя генераторы в Python пользуются большой популярностью, подозреваю, что они там тупо быстрее работают :-)

                                                                                                                                                          0
                                                                                                                                                          подозреваю, что они там тупо быстрее работают :-)

                                                                                                                                                          Ваш пример с регэкспом замена map на list comprehension ускорит примерно на 25%. )
                                                                                                                                                        0
                                                                                                                                                        P.S. В любом случае, однострочники на Python лучше даже не пытаться писать
                                                                                                                                                        Помнится Гвидо в одном выступлении сказал про это, что питон это не перл, и читаемость тут важнее.
                                                                                                                                                          0

                                                                                                                                                          Ну, строго говоря, хорошо читаемый язык от плохо читаемого отличает в том числе и читабельность однострочников. Другими словами, write-only однострочник можно на чём угодно написать… А вот такой однострочник, который читался бы не хуже чем verbose-вариант, очень мало языков позволяют писать… и Python, к сожалению, к ним не относится. В основном, тому виной плохо согласованная стандартная библиотека, которая так и не определилась процедурная она или объектно-ориентированная, в каком порядке должны следовать аргументы и т.д. В принципе, такие же проблемы есть и в PHP, поэтому с PHP на Python можно легко перейти… Но перейти с того же Ruby на Python крайне сложно, т.к. к хорошему быстро привыкаешь :-)
                                                                                                                                                          Замечу, что помимо Ruby есть ещё много языков с прекрасно продуманной стандартной библиотекой, например C#, Haskell, Elixir.

                                                                                                                                                            0
                                                                                                                                                            Возможно я являюсь исключением, но я в своё время с большим удовольствием и быстро перешел именно с Ruby на Python, о чем совершенно не жалею. В Ruby мне всегда не нравился некоторый перебор с «магией». А вообще — на вкус и цвет фломастеры разные.
                                                                                                                                                    • UFO just landed and posted this here
                                                                                                                                                        0

                                                                                                                                                        Ну так-то да, особенно если не ASCII, но просили пример попроще, чтобы новичку легко читалось…
                                                                                                                                                        Кстати, для демонстрации возможностей можно ещё и по символам range использовать:


                                                                                                                                                        puts (' '..'~').each_slice(16).map(&:join)
                                                                                                                                        0

                                                                                                                                        13.to_s.length.nil? — это абсолютно бессмысленный код… видимо, с целью показать, что методы можно объединять в цепочки.

                                                                                                                                          +1
                                                                                                                                          1. то самое видео про rake
                                                                                                                                          2. компилер за 5 минут не написать. и за 5 часов тоже.
                                                                                                                                          3.
                                                                                                                                          if len(13) == 0:
                                                                                                                                              print('the list is empty')
                                                                                                                                          

                                                                                                                                          код работать не должен, насколько я понимаю, откуда у int len? и вам придётся делать второй if, вложенный в первый

                                                                                                                                          4. под капотом python тоже превращает len(13) в 13.len (или 13._len_, или 13.__len__, я точно не помню), но скрывает это от кодера, Python в первую (но только в первую) очередь подразумевает copy-and-paste «единственно верной реализации» из документации, а не понимание того, как она работает на самом деле
                                                                                                                                            0
                                                                                                                                            1. Спасибо.
                                                                                                                                            3. Код нашел на стаковерфлоу, плюс смотрел документацию, не знаю насчет работы с int (утром я ещё не знал, что это), но с абстрактной переменной 'a' работать должен.
                                                                                                                                            4. Да, я видел развернутую версию этого метода. Т.е. получается, что отчасти Python — это такой скрипт-кидди ЯП, когда копипастишь, всё работает, но ты не знаешь, как? :) Я утрирую, конечно, и понимаю, что это сделано наверняка для того, чтобы язык был более простым.
                                                                                                                                            5. За коммент выше и упрощение в объяснении спасибо, помогло.
                                                                                                                                            Я чувствую, что меня скоро с такими дилетантскими познаниями совсем заминусуют, судя по комментам выше, да и вас отвлекать более не хочется. Спасибо, я многое узнал, доверюсь и буду учить Ruby.
                                                                                                                                          +1
                                                                                                                                          оба этих ЯП по сравнению с С++ и тем более с С дают новичку возможность очень быстро научиться собирать свой первый конструктор

                                                                                                                                          У вас тут инверсия затесалась. Си проще плюсов.


                                                                                                                                          Но интегрировать Python и C++ вроде как легче, чем Ruby и C++, тем самым быстрый старт верхом на питоне и дальнейшая интеграция его с С++ даст большую эффективность, чем бег по «рельсам» за этим локомотивом в лице С++:)

                                                                                                                                          С плюсовыми интерфейсами интегрироваться и там, и там мрак. Другое дело с сишными: более-менее удобно и там, и там. На ruby несколько удобнее, меньше boilerplate'а, см http://guides.rubygems.org/gems-with-extensions/ и https://docs.python.org/3/extending/extending.html. Хотя многие сейчас используют libffi и не жужжат, если производительность устраивает.

                                                                                                                                    +2
                                                                                                                                    machine learning — это не страшный матан. Самая страшная математика там — частные производные функций активации, если речь про deep learning, и мне кажется это еще в школьной было…

                                                                                                                                    как раз наоборот, очень простая для входа тема.
                                                                                                                                      +1

                                                                                                                                      ещё вариационка, но она не страшна ни пол раза

                                                                                                                                        0

                                                                                                                                        Это дейта сайенс, когда from scipy import svn.


                                                                                                                                        Я бы не сказал, что, например, http://pub.ist.ac.at/~chl/papers/pentina-alt2015.pdf или http://pub.ist.ac.at/~chl/papers/pentina-nips2015.pdf столь уж тривиальны.


                                                                                                                                        Плюс, на днях попадалась статья с довольно суровым топологическим подходом, просто как пример.

                                                                                                                                          0
                                                                                                                                          Ну а я вообще про deep-learning, который к изображениям и звуку хорошо подходит. Но и там фундаментальные знания часто нужны, чтобы делать что-то реально новое (ну, например, призма — уже первый курс универа линейной алгебры и несколько лет практической работы).

                                                                                                                                          безусловно, есть области, где понимание статистики очень не помешает. Правда, опять же, в реальных задачах (скажем, не обработка радио сигнала), где мало данных, не по законам физике все, часто одинаково сработают и достаточно попсовые и более интуитивные методы. Приведенная статья первая про lifelong обучение SVM, судя по заголовку. Ну это… м… ну просто взять и пересчитать SVM с примесью новых данных. Можно даже с псевдо-разметкой. И это будет работать понятно. И в реальной жизни в реальной компании скажут спасибо за именно простое решение, т.к. а) оно работает б) его понимают другие участники команды в) времени меньше на отладку г) мы тут не грант на исследование дали, а работу сделать. ))))
                                                                                                                                            0

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


                                                                                                                                            @0xd34df00d, ещё не упомянули классическое развлечение с ошибками в статьях и в приведенном коде (когда он вообще есть).

                                                                                                                                              0
                                                                                                                                              все, «гусары молчать!» Только не про исходники к статьям ))))))
                                                                                                                                                0
                                                                                                                                                еще 80% статей в machine learning мне кажется страдает совсем другой проблемой: предложили разумную идею, реализавали, показали на открытых базах, что да, стало на 20% лучше. Победа. При этом, чтобы реализовать идею сделали «A»,«B»,«C» + самое ценное «X». А начинаешь разбираться, выкидываем саму угловую идею «X», потом «C»,«A». Оказывается «B» дает прирост 15-25%. И складывается впечатление, что авторы это прекрасно понимают, ибо не дураки, но в «B» нет новизны. А она нужна, все-таки по гранту работали наверняка
                                                                                                                                                +1

                                                                                                                                                Про что я и говорю.


                                                                                                                                                Ну это… м… ну просто взять и пересчитать SVM с примесью новых данных.

                                                                                                                                                Нет, не просто, там вычислительная сложность принципиально другая получается.


                                                                                                                                                Есть две разных области, одна — все эти диплёрнинги и SVM применять в продакшене, другая — всё это разрабатывать. Для первого сегодня, вероятно, существенного матана вообще не надо, даже частные производные считать не надо, tensorflow всё посчитает.

                                                                                                                                          0
                                                                                                                                          Хм, я нахожусь тоже на перепутье. Правда мне 23, а не 40 :) Есть некий опыт в разработке СУБД (который я не хочу зарывать в землю, а продолжить когда-либо и дальше работать) и PHP. Могу сказать, что PHP мне не нравится, какое-то внутреннее отторжение от языка, не знаю, как объяснить даже. А вот Python очень даже, хоть я учить его начал относительно недавно. Пишу мелкие скриптики и ковыряю Django. Вопрос: а вы уже нашли работу? И как прошло собеседование? Хотелось бы, что бы поделились процессом прохождения собеседования.
                                                                                                                                            0
                                                                                                                                            в разработке СУБД

                                                                                                                                            Какую базу писали? В связи с упоминанием PHP рядом складывается впечатление, что это просто некорректно сформулированная фраза.

                                                                                                                                              0
                                                                                                                                              Разработчик СУБД — в частности Oracle. И естественно не в разработке самой СУБД, а написание приложений в Oracle — бизнес-логика, отчеты и т.п.
                                                                                                                                                0

                                                                                                                                                Т. е. всякие PL/SQL и прочие радости. У меня это скорее ассоциируется с DBA и разработчиками систем на базе соответствующей РСУБД.

                                                                                                                                            +2

                                                                                                                                            Автор я вам искренне рекомендую обратить внимание на язык Go. Сам стал активно изучать этот язык, до этого программировал на Java. Зачем изучать другой язык, когда большинство в энтерпрайзе сидят на Java 1.6, и всем все хорошо. Я ушел из энтерпрайза (из банка), потому что чувствовал то же что и вы описали. К сожалению в мире программирования, не все так гладко. Прежде чем стать программистом, я работал в одной нефтяной компании, сис. админом. Так вот там чтоб стать менеджером, человек должен был сначала поработать на буровых лет пять как минимум. Но те кто отработали свои пять лет, как правило не хотели становиться менеджерами и продолжали работать на буровых. Менеджеры в этой компании были в основном люди за 50, с огромным опытом в своей сфере. В сфере же программирования (сужу по своему опыту из банка), люди руководящие (или пытающиеся это делать) программистами, как правило не имеют никакого отношения к программированию, а порой просто случайные люди. Такие "менеджеры" просто мешают программистам делать свою работу, потому что их Эго не дает им покоя. Я желаю вам не отступать раз уж решили стать программистом, и быть снисходительней и терпеливей если на вашем пути попадутся такие "менеджеры".

                                                                                                                                              +2

                                                                                                                                              Отдаю свой голос за Go. Достаточно легкий в освоении. Очень производительный. Хорошие перспективы в корпоративной разработке. Несколько раз встречал вакансии, где готовы были брать практически с нулевым опытом.

                                                                                                                                                0

                                                                                                                                                Мне к сожалению попадались вакансии, где хотели (выяснялось на собеседовании) чтоб человек хорошо знал PHP, и немного Go (видимо чтоб переделывать что-то из PHP на Go). Хотя в заголовках было написано требуется Go разработчик и не слова про PHP ;) Так что я понял одного Go на данный момент пока не достаточно. Найти вакансию чисто на Go, сложнее.

                                                                                                                                                  0
                                                                                                                                                  Все верно. Например, на хабре многие говорят, что Хаскел крут и все дела. На всей мой круг — хх — всего одна вакансия под него. Потом оказывается, что круто — не значит востребовано.
                                                                                                                                              +1
                                                                                                                                              Сразу вспоминается старый анекдот: — Вот так просто ВЗЯТЬ и уйти из авиации?! :)

                                                                                                                                              Питон — язык интересный. Но, положа руку на сердце, нужно отметить, что если подходить к делу серьёзно, то надёжнее было бы выбрать более корпоративную платформу.
                                                                                                                                                0
                                                                                                                                                А если не смотреть именно на web-приложения. А допустим в сторону разработку и администрирования СУБД(Oracle, PostgreSQL)?
                                                                                                                                                  0
                                                                                                                                                  Да. Это также хороший проверенный «хлеб». ))
                                                                                                                                                  Но он несколько более такой ремесленный что-ли. Много тяжёлой, ответственной и даже немного нудной работы.
                                                                                                                                                    +1
                                                                                                                                                    Да просто приходит понимание, что программирование, увы, не совсем мое. Вот и присматриваюсь к области разработки СУБД и DBA. А Python очень практичен я считаю, такой простой инструмент для каждодневных задач :)
                                                                                                                                                      0
                                                                                                                                                      В этой области вполне чётко просматриваются три отличающихся профессии:

                                                                                                                                                      1. Проектирование БД.
                                                                                                                                                      2. Программирование БД (разработчик БД).
                                                                                                                                                      3. Администрирование БД.

                                                                                                                                                      1. Проектирование — смыкается с системным анализом. Это разработка структуры БД. А структура БД, как правило, отражает структуру данных предметной области.

                                                                                                                                                      2. Программирование — написание кода для создания базы данных и, если нужно, программирование триггеров и хранимых процедур. Это по сути тот же программист, только на языке SQL (если БД реляционная) и внутренних языках серверов БД.

                                                                                                                                                      3. Администрирование — скорее ближе к профессии системного администратора. Предполагает администрирование сервера базы данных. Но помимо установки, конфигурирования и поддержки работы сервера, часто требует оптимизации его работы, анализа планов выполнения запросов на предмет скорости (вместе с разработчиком БД) да и просто «ковыряния» в данных, если с БД что-то произошло.

                                                                                                                                                      В современных проектах проектирование БД в виде таблиц часто скрыто различными системами мапирования, когда проектируется объектная модель предметной области и она автоматически превращается в структуру БД. В этом случае разработчик модели данных автоматически создаёт структуры базы данных.

                                                                                                                                                      Так что тут также нужно точнее определяться к чему лежит душа.
                                                                                                                                                    0
                                                                                                                                                    Если быть чистым базовиком, будет сложнее с удаленкой по этой теме. Меньше вакансий гораздо.
                                                                                                                                                  +1
                                                                                                                                                  рынок программного обеспечения неуклонно растет, а значит растет спрос и на специалистов, а вот производство оборудования в РФ непрерывно сокращается.
                                                                                                                                                  С рынком ПО тоже не везде плавно.
                                                                                                                                                    +10
                                                                                                                                                    История из жизни
                                                                                                                                                    Жил в деревне то ли под Псковом, то ли под Тверью тракторист. Отслужил армию. Вернулся домой и задумался, а чем дальше заниматься, и поехал в Питер. Устроился на работу в спецхозяйство по уборке улиц и поселился в общежитие на койко-место.
                                                                                                                                                    Вместе с ним жили два программиста, которые по вечерам обсуждали сво нелегкие рабочие проблемы, и наш герой мало-помалу стал вникать в их проблемы и получать некие навыки программирования.
                                                                                                                                                    Кончилось тем. что он устроился в питерскую фирм программистом, где и работает по настоящее время, находясь на хорошем счету у руководства.

                                                                                                                                                    Мораль — жизнь достаточно длинна, что непредсказуема, но всем успехов, тем более, в сфере разработки толкания локтями не наблюдается.
                                                                                                                                                      –1
                                                                                                                                                      Ну прям басня от Крылова. Тут корячишься, учишься… А тракторист из под Пскова, лёжа в постели в общаге, умных мужиков одним ухом послушал и пошёл, показал всем Кузькину мать. ))


                                                                                                                                                      Пусть «плугами» зовут нас городские чуваки,
                                                                                                                                                      Нам на это наплевать, они сами дураки,
                                                                                                                                                      Мы все механизаторы и нам живется очень даже клево.
                                                                                                                                                      … (с)
                                                                                                                                                        0
                                                                                                                                                        Не верите — ваше дело,
                                                                                                                                                        Но это не уникальный случай — в ходе своей долгой профессиональной деятельности я часто встречал молодежь схватывающую все на лету, даже без высшего образования.
                                                                                                                                                        Тем более, имея большой вузовский опыт по информационным технологиям, могу сказать, что в вузах технологиям разработки не учат
                                                                                                                                                        Хотя конечно без высшей математики ряд сфер обработки будет недоступен по отсутствию нужных знаний.
                                                                                                                                                        Также в словах «мало-помалу» содержится то, что он не краем уха получал знания, а начал общаться с ними (программистами), задавая интересующие его вопросы
                                                                                                                                                          –3
                                                                                                                                                          Ну что значит верите-не верите. Тракторист — это не диагноз. Это — уважаемая профессия. И этот человек вполне мог пойти и получить новую профессию. Скажем — программиста. Просто с большего он её получил не лёжа в постели. А наверное пошёл и поучился. Посему, мне кажется, не стоит это представлять так мифически, как русскую народную сказку.
                                                                                                                                                            0
                                                                                                                                                            зачем мне приписывать, что я не писал — где сказано, что тракторист неуважаемая профессия
                                                                                                                                                            А если вы мне не верите, то смысл в чем писать комментарий
                                                                                                                                                            А своего героя я просто знаю.
                                                                                                                                                              0
                                                                                                                                                              Эк вы буквально то.
                                                                                                                                                              Кстати в истории не было, что он получил знания лежа в постели.
                                                                                                                                                              Вспомнилось мне, как коллега, программист на С++, жаловался, что вот есть у него родственник, тракторист (вот ведь совпадение), человек без высшего образования, все время выигрывает у него в шахматы. Программист наш уже и учебник себе купил по шахматам и время на обучение потратил, но вот, проигрывал. При этом родственник, тракторист, не ходил в шахматные школы. Талант был, походу, у тракториста, к шахматам.
                                                                                                                                                                –1
                                                                                                                                                                Верно. В истории было что… Кончилось тем. что он устроился в питерскую фирм программистом… Другими словами, не исключено что перед этим он закончил университет. И никаких вопросов.
                                                                                                                                                        –9
                                                                                                                                                        Вы молодцы… Python — хороший выбор!
                                                                                                                                                        Но знания одного языка программирования недостаточно для профессиональной разработки.
                                                                                                                                                        Ознакомьтесь с компетенциями профессиональной разработки ПО — http://it-check-list.asvoip.com/
                                                                                                                                                        и подпишитесь на курс
                                                                                                                                                        http://gitlab.asvoip.com/
                                                                                                                                                          0
                                                                                                                                                          40 лет — еще не повод идти в сторону кладбища. У вас как минимум 25 лет до пенсии. А что такое 25 лет? Это очень много. Нам очень повезло жить в такое время, когда профессия программиста очень ценится, зарплаты существенно выше средних по стране. При этом все что нужно для работы — дешевый компьютер и интернет. Никаких университетов, дипломов, больших денежных вложений не нужно. Как например нужно водителю многомиллионой фуры.
                                                                                                                                                          Глупо не воспользоваться этой ситуацией!

                                                                                                                                                          Выбор языка поддерживаю. Но все же в дальнейшем рекомендовал бы вам попробовать Java. Это более серьезный язык, задачи шире и ответственнее (мобильная разработка, корпоративные бэкэнды).
                                                                                                                                                          В С/C++ не лезьте. Ниша стремительно сужается, работы мало, а язык довольно сложный и неудобный.
                                                                                                                                                          Успехов вам!
                                                                                                                                                            +2
                                                                                                                                                            В С/C++ не лезьте. Ниша стремительно сужается, работы мало, а язык довольно сложный и неудобный.

                                                                                                                                                            Два языка. Если про C++ соглашусь, что язык сложный и обилие legacy, то в случае C язык сам по себе не очень сложен.

                                                                                                                                                              +2

                                                                                                                                                              Начнём с того, что C и C++ — два разных языка.


                                                                                                                                                              Если и сужается, то относительный вес ниши тех же плюсов по сравнению со всякими новомодными вещами. Да и на современных плюсах писать одно удовольствие, на самом деле. Хотя язык сложный, конечно, но уже не неудобный.

                                                                                                                                                                0
                                                                                                                                                                С++ по сути надмножество на С. Почти любой код на С это валидный С++ код. Из С++ можно нативно вызывать С-ные функции. Даже лямбды можно передавать в качестве callback-ов, если нет контекста. Одинаковая модель памяти, вызовов, макросы, includ-ы, да много чего еще.
                                                                                                                                                                  0

                                                                                                                                                                  Да, почти строгое надмножество, но, тем не менее, языки разные.

                                                                                                                                                                    +1

                                                                                                                                                                    После C99 сказать, что надмножество тоже не получится, а тем более если сравнивать с C11. Те же VLA на стеке (в C++14 ввели или нет — хз, но они обещали быть иными чем в C11), разная семантика присваивания, _Generic, инициализаторы вида { .b = ... }, bitfields (если правильно помню).


                                                                                                                                                                    Можно сказать, что C++ надмножество какого-нибудь C89/C90, но и то не факт.

                                                                                                                                                                      +1

                                                                                                                                                                      Поэтому я и сказал, что «почти».


                                                                                                                                                                      А VLA в плюсах нет и вряд ли будет (это, по факту, в случае плюсов с их темплейтами добавляет в систему типов элемент undecidability). bitfields есть вот зато. Ну а так ещё можно вспомнить про тип 'a' — int или char, и так далее.

                                                                                                                                                                –7
                                                                                                                                                                C и С++ хоть и 2 языка, но скажите мне, что сейчас пишут на С?
                                                                                                                                                                Разве что микроконтроллеры мелкие, да и то нужно поискать, где нет С++ компилятора. То есть ниша вакансий pure C на hh.ru еще уже.

                                                                                                                                                                С++ прежде всего неудобен непрактичностью в современном мире. На нем вы не напишите сайт, приложение для смартфона, скрипт для machine learning. А десктопные программы сейчас мало кому нужны.
                                                                                                                                                                  +2
                                                                                                                                                                  C и С++ хоть и 2 языка, но скажите мне, что сейчас пишут на С?

                                                                                                                                                                  Ядра, дрова, embedded, криптография, компиляторы (иногда, сейчас скорее исключение), базовые библиотеки, интепретаторы/VM скриптовых языков (cpython, mri ruby, lua), расширения для них. В общем, системное и низкоуровневое — по прежнему ниша Си.


                                                                                                                                                                  С++ прежде всего неудобен непрактичностью в современном мире. На нем вы не напишите сайт, приложение для смартфона, скрипт для machine learning. А десктопные программы сейчас мало кому нужны.

                                                                                                                                                                  Какой нахрен сайт на C++? Софт для android-смартфонов, если это не webview к сайту довольно часто использует NDK и C++.


                                                                                                                                                                  Если говорить за ML, то одна из базовых библиотек, столь любимая многими, — numpy всё основную работу делает в сишном и фортрановском коде (фортран — если используется netlib blas/openblas без оптимизаций). Intel TBB, MKL, DAAL — всё C + asm.

                                                                                                                                                                    –2
                                                                                                                                                                    Я говорю о количестве вакансий. Много ли их в вашем городе (не Москве) на «Ядра, дрова, embedded, криптография, компиляторы»? Почему в этих вакансиях обязательно нужно писать на C, а не C++?
                                                                                                                                                                    Кстати, про embedded я уже написал.

                                                                                                                                                                    Какой нахрен сайт на C++? Софт для android-смартфонов, если это не webview к сайту довольно часто использует NDK и C++.

                                                                                                                                                                    Часто это когда? Оправдано, только если нужно делать сложный обсчет или 3Д игру.

                                                                                                                                                                    Если говорить за ML

                                                                                                                                                                    Библиотеки написаны на чем угодно. Но почему-то очень часто работают с ними на Python.
                                                                                                                                                                      +1
                                                                                                                                                                      Я говорю о количестве вакансий. Много ли их в вашем городе (не Москве) на «Ядра, дрова, embedded, криптография, компиляторы»?

                                                                                                                                                                      Вы спрашивали "что сейчас пишут на С", а не про количество вакансий. Тем более в противоречивом "моём городе (не Москве)", когда я нахожусь в MSK.


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

                                                                                                                                                                      Зависит от конкретного случая. С большой вероятностью это будет зависеть от того, на чём проект написан. В случае ядра, если оно написано на Си (Linux, как самый распространенный вариант) на C++ не пишут, как правило. Иногда это невозможно (читай нерационально).


                                                                                                                                                                      Для низкоуровневых библиотек, даже если используют плюсы, делают внешний сишный интерфейс, т. к. interop.


                                                                                                                                                                      Часто это когда? Оправдано, только если нужно делать сложный обсчет или 3Д игру.

                                                                                                                                                                      А также при использовании низкоуровневых вещей (iptables, криптография как частные примеры), аудио/видео кодеков.


                                                                                                                                                                      Библиотеки написаны на чем угодно. Но почему-то очень часто работают с ними на Python.

                                                                                                                                                                      Это пока хватает производительности и/или памяти. Потом начинаются torch/tf/whatever, C/C++, cilkplus, icc.

                                                                                                                                                                    +2
                                                                                                                                                                    С++ прежде всего неудобен непрактичностью в современном мире. На нем вы не напишите сайт, приложение для смартфона, скрипт для machine learning. А десктопные программы сейчас мало кому нужны.

                                                                                                                                                                    Пишу, помимо прочего, machine learning на С++. Не все задачи решаются полутора строками дёрганья готовых библиотек, к сожалению к счастью.


                                                                                                                                                                    Ну и есть огромный рынок бекенда и всякого околосерверного ПО, которое на плюсах писать вполне себе можно и приятно.

                                                                                                                                                                  +4
                                                                                                                                                                  Python как язык очень простой. Сейчас изучаю Ruby и начинает казаться что питон многословен, некоторые мелочи видятся костылями которыми он оброс c годами. Начинаю понимать рубистов почему они так любят этот язык.))
                                                                                                                                                                    0
                                                                                                                                                                    С точки зрения знакомого с Java многие синтаксические конструкции Ruby вызывают непроизвольный смех — не верится, что может быть настолько удобно и… естественно что ли.
                                                                                                                                                                      0
                                                                                                                                                                      А после этого посмотрите на c# 7 =)
                                                                                                                                                                        0
                                                                                                                                                                        А что с ним?
                                                                                                                                                                          –3
                                                                                                                                                                          после c# синтаксис любого другого языка «вызывает смех и не верится что в них все так плохо»
                                                                                                                                                                      +2
                                                                                                                                                                      С Ruby не знаком, но когда после PHP начал изучать Python — это был просто восторг.
                                                                                                                                                                      Особенно понравилось, что вместо невнятного вороха функций с префиксами str_, array_ и т.п. используются понятные и логичные методы объекта соответствующего типа и это все выстраивается в четкую и логичную систему.
                                                                                                                                                                        +4
                                                                                                                                                                        Люто поддерживаю, по сравнению с PHP — Python просто конфетка.
                                                                                                                                                                      +2
                                                                                                                                                                      И ведь и многие выше сразу набросились на выбор языка, но ведь это программирование, какая разница какой язык? Начать с питона или пхп, на мой взгляд очень хороший выбор. Быстро вник, сразу понял что присходит, что плохо, а что хорошо. Через год, два, три можно уже будет начинать изучать и другие языки, основываясь на опыте, который получил на первом язык.
                                                                                                                                                                        0
                                                                                                                                                                        Есть такая вещь, как «синдром утёнка».
                                                                                                                                                                        Кмк, учиться программированию лучше вообще без привязки к конкретному ЯП.
                                                                                                                                                                          –2
                                                                                                                                                                          Да, есть такая вещь. И именно потому крайне важно каким будет первый язык. Поскольку школа этого языка, с высокой степенью вероятности, будет определять симпатии и антипатии человека в дальнейшем. И хорошо, если первым языком окажется Pascal, Java, C# да хоть C++. А вот если им окажется Бейсик, то уже всё не так радужно. Опять же, когда люди пишут что многословность является недостатком языка, это как правило говорит о не очень глубоком понимании проблемы. Мудрость гласит: Написать программу так, что бы её понял компьютер — не самое сложное. Гораздо сложнее написать программу так, что бы её легко понял другой человек.
                                                                                                                                                                            +2
                                                                                                                                                                            И хорошо, если первым языком окажется Pascal

                                                                                                                                                                            Довольно непопулярное, но верное замечание! )
                                                                                                                                                                              0
                                                                                                                                                                              С паскаля пересаживаясь на Python радовался понятности кода, далее взявшись за серьезную разработку на JS плевался. Но все таки тонкости Python с лету не понять, но идея очень хорошая. Если его использовать строго по назначению, очень даже мне понравилось. Я считаю что язык не важен! Хватает от силы пол года что бы понять суть языка, но а тонкости приходят по мере надобности(опыта). Например, хоть мне и JS очень не понравился, но в некоторых задачах ему нет равных в плане быстрого написания понятного кода(сам сказал — сам же сомневаюсь, а ведь так и есть).
                                                                                                                                                                                0

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

                                                                                                                                                                                  0
                                                                                                                                                                                  Я с Бейска (первый язык) очень легко перешёл на Фортран. Затем перешёл на Паскаль. И после на C/C++. А переходя на Дельфи обнаружил помимо знакомых паскалевских штучек, ещё и объектную модель от C++ (в Борланд Паскале объекты заметно отличались). Сейчас я на PL/SQL.

                                                                                                                                                                                  PS в принципе, знаком с C#, с Прологом, с Джава-скрипатами и ещё кучей языков, но на них я серьёзно не писал.
                                                                                                                                                                                +1
                                                                                                                                                                                И хорошо, если первым языком окажется Pascal, Java, C# да хоть C++

                                                                                                                                                                                C++ как первый язык выглядит сложным и опасным вариантом. А pascal, java, scheme — вполне удачны. За C# не скажу, на нём никогда не писал.

                                                                                                                                                                                  0
                                                                                                                                                                                  Да, рекомендовать С++ как первый язык никогда не стал бы. Сложный и опасный. Но тем не менее он с большего правильно организован. И если уж так случилось и удалось его хотя бы частично немного осилить, то языковое мировозрение для мейнстрим императивных языков будет правильным.
                                                                                                                                                                                    0

                                                                                                                                                                                    Начинал с js, перешел на c# и не нарадуюсь. От строгой типизации просто восторг. Очень продуманный и лаконичный язык.

                                                                                                                                                                                +2
                                                                                                                                                                                Нет. ПХП — очень нехороший выбор. Да и Питон… так себе. И вкус тут не причём.
                                                                                                                                                                                +5

                                                                                                                                                                                Почему бы не выбрать работу, смежную с вашей теперешней, но связанную с программированием? Например писать прошивки для измерительной аппаратуры, контроллеров и т. д.