Python или 1с что выбрать
Моя история начинается с того, что на 3 курсе обучения на геолога-бакалавра я увлекся программированием.
Мне стало ясно, что я нашел дело своей жизни. После 4 курса, как только диплом был на руках, я тут же подал его в другой институт на программиста-магистра. Поступил и теперь учусь на первом курсе.
Здесь я немного разочаровался в преподавании, часов мало и учат очень поверхностно. Сам в свободное время изучаю Python. Еще я хотел бы параллельно работать по профессии, чтобы набить руку и получить опыт.
Но, к сожалению, у нас в Казани я пока не могу найти работу программистом с моим уровнем знаний. Только стажером-1С. Хотел бы узнать ваше мнение, господа, что для меня будет полезней?
1) Работать программистом-1С, хотя в будущем я хочу быть питонистом?
2) Или же не работать и посвящать свободное время изучению питона? Но без опыта же никто не хочет брать на работу!
Замечательный по уровню провокативности вопрос для 1С-холиваров :)
Экзистенциальный кризис автора понятен, но его не решить вопросами в интернете.
Тут у меня не будет "серебренной пули", а просто немного здравого смысла.
Мне даже браузер подчеркивает слово "питонистом" - видимо хочет заменить его на более значимое "пианистом". Быть питонистом - это ни о чем! Это отсутствие профессии и борьба с индусами за дешевые заказы на апворке по решению домашек для школяров-недоучек. На самом деле люди стремятся стать научными сотрудниками, которые используют Python в научных расчетах. А еще люди становятся крутыми админами, которые пишут обслуживающие скрипты на Python или правят результаты работы криворуких контрибуторов ихнего ПО. Еще люди могут становится веб-разработчиками и пилить проекты на Django. Куда мысль веду понятно?
2) Или же не работать и посвящать свободное время изучению питона? Но без опыта же никто не хочет брать на работу!
А с опытом эникейного мальчика-на-побегушках возьмут?
Не знаю какие у автора увлечения, но если экономика и теория управления предприятием не входит в их число, то заниматься 1С будет крайне скучно! А вот если вам нравится генетика и биоинформатика в целом, то могу порекомендовать обратить внимание на проект Rosalind, где даются базовые знания по Python и далее с его помощью решаются довольно увлекательные задачи. Я на этом проекте немного прокачался (после своего решения объязательно в обсуждении задач смотреть опыт других участников) и далее с легкостью писал свои скрипты под Ubuntu.
1с - отдельная сфера, не связанная с другими областями программирования.
Лично я (мое сугубо субъективное мнение) 1с'ников вообще за программистов не считаю.
Если хотите программировать, учите питон. Недостаток опыта можно клмпенсировать собственными проектами. Начните с самых простых. Поделитесь ими на github. В it компаниях ценятся кандидаты, у которых есть собственный репозиторий на github. Да, вам придется изучить систему контроля версий git. Очень полезный инструмент в разработке. Освоить можно за пару-тройку дней.
Есть на ютубе полезный канал для новичков, называется SHIFU.
Посвящен развитию программиста как специалиста.
Выпал мне в рекомендациях этот shifu. честно, канал ни-о-чем. Лично я бы посоветовал новичкам вообще не тратить время на просмотр этого контента. Автор, отвечая на вопросы, просто жуёт воду, да ещё и нередко со своей «однобокой» колокольни.
Константин Нагибович, Ну для меня это IT-специалист, занимающийся автоматизацией бухгалтерии.
Ну или Продвинутый бухгалтер, который умеет писать макросы
dableproger, если смотреть с этой точки зрения смотреть, то питонисты - это циркачи, которые работают со змеями. Точно, циркачи из летающего цирка Монти Пайтона - инфа из Википедии. Верняк!
То о чем вы говорите - это 1С Бухгалтерия 6 из 90-х. И тогда "программистами 1С" действительно были продвинутые бухгалтера, которые умели писать макросы. Но уже в 90-х появились более полноценные 7.5/7.7, а в нулевых началась линейка платформы 8.х
Если не хотите смешить людей, то пора попрощаться с ракушкой и выйти в реальный мир. Не знаю, посмотрите что ли ролики на Ютубе как там в мире 1С сейчас все устроено.
Любой опыт всегда пригодится.
И чем он ближе к желаемому - тем больше и пригодится, априори.
------
1С - это очень и очень разная квалификация.
"Программистами 1С" называют и реальных программистов,
и мальчиков-на-побегушках-настрой-принтер-установи-картридж.
Ну исторически так сложилось.
Если вы реально будете программировать - а программирование там вполне себе серьезное: есть где развернуться и с оптимизацией запросов к базам данных и пр.
Те кто пишут иное:
Идиоты или просто не в теме
Ну например, они встречались только с одним аспектом по обслуживанию 1С, не относящимся к программированию - с ребятами которые бегают обновляют штатные конфигурации, а не занимаются программированием.
Никаких таких сверхумных экономических или бухгалатерских знаний не требуется. Весь учет построен на здравом смысле. Было 3 яблока, купили 2 яблока, продали 4 яблока, осталось 1 яблоко.
Спец. термины типа дебет, кредит, сальдо, проводка - программисту 1С нужны даже не каждый месяц, не то что каждый день. Да и учатся они за 15 минут. Бояться этого не стоит.
Отлично развивает навыки общения с заказчиком, постановку задачи.
Отлично развивает навыки оптимизации запросов, работы с типовыми алгоритмами.
Принципиальное отличие в 1С следующее:
Все эти так называемые "настоящие программисты" вместо того, чтобы решать конкретную прикладную проблему - тратят свое время в том числе и на общеупотребимую обвязку: логи, БД, GUI. В 1С это все уже реализовано и жестко зашито. Тебе не нужно тратить время на это.
Ты будешь тратить время на решение программным путем конкретной проблемы клиента.
Очень способствует развитию навыков системного анализа.
(1) Если мне нужно вскопать грядку, я буру лопату. Если нужно уничтожить траву по периметру - беру косу.
Да, косой можно ковырять землю, а лопатой сбивать траву, но это не их специальность.
Как можно сравнить разные языки с разными задачами? Это то же самое, что сравнивать лопату и косу - что круче.
(37) Рафаэль Сабатини не согласен: ". большинство же тащили огромные пики, сделанные из кос, страшные на вид, но мало пригодные в бою. "
работает где ?
на море или в океане.
отличается как минимум синтаксисом, сообществом и употреблением .
обычно язык выбирают под задачу, или вам интересно задачу выполнить на разных языках ?
(3) Да, интересна средняя температура по больнице. Допустим есть серия одинаковых задач, даже без интерфейса, просто процедуры - реализация алгоритма. Что отработает быстрее 1С или Python, 1C или Java и т.п.
(4)
быстрее - это относительно :
написать на ява не равно на питон
одно быстрее будет работать, но долго код "составлять и отлаживать"
на разовую задачу нет смысла
питон работает только с одним ядром :)
но. вы можете за 15минут составить скрипт и он будет работать 6часов
и на яве также или на 1с составите та же за 6часов и работать будет за 15минут :)
(4)
вобщем питонисты потянут на себя
джависты будут указывать свои только сильные стороны
а инфостарт может забросать помидорами за другие языки :)
я бы выбрал питон
он универсальный,простой .
Без средств для создания GUI, без средств для рисования отчетов.
Язык программирования общего назначения против специализированной базы данных. Да, есть что сравнить.
против специализированной базы данных. ? --- ничего себе подняли язык 1с
вы напишите gimp inkscape blender3d и много чего на 1с и тогда узнаем ваше GUI
я же предупреждал :
а инфостарт может забросать помидорами за другие языки :)
(10) для GUI есть Qt for Python. Очень даже не плохо.
Хотя сравнивать их напрямую с УФ 1С я бы не стал. Но GUI есть и для python.
(14) Потрясающе, а мужики то и не знали. И он прямо "из коробки" с питоном? Как и прочие GUI? И совершенно бесплатный? И учить им пользоваться намного проще чем форму в 1с набросать?
(15) он не из коробки в прямом смысле.
Но он бесплатный и его можно напрямую получить прямо с python.
Тут все не однозначно. И сложную форму на 1С не просто изучить/набросать. Но возможностей qt намного больше.
(15)
уже в сравнении цена ?
1с проф минимум любой конфигурации
или вы пишете задачи на "платформе обучения программированию" :)
потом окажется, что на старом компе 1с даже не запустится и понеслась .
так что будем сравнивать :
1с программист, который слышал о питоне и не знает,что с ним делать
программист на питоне, который слышал об 1с,но не хочет с ним связываться :)
начало "священных войн" никогда не можно узнать, но по направлению ветра - можно увидеть :)
Вот, как раз "средняя температура по больнице" будет одинаковая.
Если рассматривать чисто "просто процедуры - реализация алгоритма", то как правило 1С будет уступать по большей части.
Но, попробуйте на python нарисовать что-то подобное типовых от 1С (УТ или ERP). Много новых ругательств изучите.
Скорость разработки выше на 1С, если устраивает ее модель.
Более гибкое решение можно сделать на python (java и т.д.), но с ее особенностями.
Да даже просто попробуйте реализовать математические вычисления больших чисел на типизированных языках. Будет весело )
(7) Да, тему по сути можно сузить до алгоритмов с числами. Вопрос в том, чье ядро интерпретатора быстрее?
(9)Боюсь, 1с какую-нить питоновскую numpy никак не обгонит. Но при чем скорость интерпретатора? Или речь о вычислениях не сложнее 2+2?
Снова не корректное сравнение.
Как уже приводил пример: "попробуйте реализовать математические вычисления больших чисел на типизированных языках".
С другой стороны у python много встроенных методов манипулирования с коллекциями.
Тут тоже не все так однозначно. Разный подход.
По большей части, 1С компилирует код в байткод при запуске.
У Python (если брать стандартный вариант основанный на CPython) все проще и сложнее одновременно. Большинство его библиотек написаны на С/С++.
При выполнении кода он может как интерпретировать его и, если успевает, то и компилировать на лету. То уже при последующем выполнении этого кода может выполняться скомпилированный код.
Ну и работа с ядрами. Там все сложно. Клиент 1С работает только в одном потоке. Сервер уже может работать многопоточно.
У python тоже много условностей. В основном он работает только с одним ядром, но у него есть разные версии (JPython к примеру), которые могут.
Ну и стоит учитывать, что платформа 1С, хоть и написана на С++, но сама по себе сложная и ресурсоемкая.
Вероятнее всего 1С не компилирует "код" (под этим я понимаю код программиста в модулях) в "байт код" при запуске, он уже скомпилирован в интерпретируемый код, дальше просто работает интерпретатор с ним. Возможно вы написали о том же.
При выполнении кода он может как интерпретировать его и, если успевает, то и компилировать на лету. То уже при последующем выполнении этого кода может выполняться скомпилированный код.
Вероятнее всего 1С не компилирует "код" (под этим я понимаю код программиста в модулях) в "байт код" при запуске, он уже скомпилирован в интерпретируемый код, дальше просто работает интерпретатор с ним. Возможно вы написали о том же.
Нет. Он именно компилирует в байт-код при запуске. Причем не все сразу. Общие модули (не глобальные) и модули объектов метаданных компилируются по мере их использования.
Можете проверить:
Сделайте ошибку в не используемом месте кода, скажем модуля формы справочника. Ошибка будет выброшена при попытке открыть этот справочник, хотя выполнение кода до нее никак не добирается. Именно при первом использовании нужного модуля будет компиляция в байт-код.
Тут на форуме есть статься про ассемблер для 1С.
Пример байт-кода можете посмотреть просто: Создайте свою поставке и не включите текст модуля для нее. Полученную конфигурацию разверните и выгрузите файлы. Там можно будет найти файл bin, в котором и будет байт-код.
Пример байт-кода можете посмотреть просто: Создайте свою поставке и не включите текст модуля для нее. Полученную конфигурацию разверните и выгрузите файлы. Там можно будет найти файл bin, в котором и будет байт-код.
Интересно, я думал что уровень интерпретатора ограничивается иерархией: ПрограммныйМодуль - КодИнтерпретатора (,) и т.д. А дальше ядро 1С выполняет КодИнтерпретатора. Не понимаю тогда смысла в 3 уровне - байткод. Это же не exe?
(23) выполнение байт-кода на виртуальной машине будет быстрее, чем использовать только чисто интерпретатор.
При использовании только интерпретатора придется или держать весь код в памяти, или каждый раз прочитывать код (одновременно анализируя на ошибки написания) и переводить его в свою выполняемую конструкцию построчно.
При предкомпиляции - весь модуль кода сразу единовременно переводится в байт-код и уже он в итоге выполняется.
Почему не делается сразу в exe. Вы знаете сколько времени может занять компиляция в исполняемый файл большого проекта?
Я тут как-то перекомпилировал динамические библиотеки qt5 в статические. На хорошем компе (i7 + 16Гб памяти и ssd) у меня это заняло около суток.
Так что предкомпиляция при запуске это не так уж и плохо.
(4) при реализации универсальных алгоритмов средствами языка 1С будет в среднем на порядок медленнее чем Python(Java), и на несколько порядков медленнее компилируемых языков. Причина этого в том, что в 1С по умолчанию используется "большая" математика для всех вычислений, включая выражения 2+2.
Наткнулся на интересный обзор по скорости :) Конечно все относительно, но показательно с другой стороны, интересно упоминание использования ядер. Хотя это тоже вопрос подхода в написании программного модуля или работы программного ядра (интерпретатора , в случае со скриптовыми языками)
Как можно видеть, Java единовременно использует минимум 4 ядра, в то время как программа на C++ — одно. Однако, этим нельзя объяснить превосходство в скорости в 8 раз, так как Java не задействует все ядра на 100%.
(20) я тоже могу написать код на С++, который будет в 20 раз медленнее вычислять математические действия, чем на 1С )))
(26) Это, да но тема про ядро интерпретатора, разработчики же не рубят сук на котором сидят, они должны быть заинтересованы в конкурентности своего продукта. С точки зрения легкости построения БД 1С по сравнению с Python может и выигрывает на первый взгляд, что тоже не аксиома и можно спорить, поэтому для сравнительного анализа был выбран критерий работы алгоритмов с числовыми данными во множественных итерациях, т.е. достаточно примитивные вычисления не зависящие от других факторов архитектуры интерпретатора в целом, со всеми его возможностями.
поэтому для сравнительного анализа был выбран критерий работы алгоритмов с числовыми данными во множественных итерациях, т.е. достаточно примитивные вычисления не зависящие от других факторов архитектуры интерпретатора в целом, со всеми его возможностями.
Даже тут все не однозначно. Достаточно того, что python это типизированный язык. 1С нет.
Даже простое деление может дать совсем разный результат.
Если рассматривать только время выполнения 2+2, то python будет быстрее из-за низких расходов на платформу.
(29) И в целом может быть посыл темы даже в другом. Найти, если он все же есть, способ выжать из 1С по максимуму исходя из того что он является интерпретируемым языком. Избавляться в критичных модулях от псевдо-кода, оставлять байт-код? На сколько это увеличит скорость? Если по сути весь выполняемый процесс - это одна процедура, на время инициализации формирования байт-кода? Не очень большой выигрыш. Взять для сравнительного анализа, который проводили уже многие, скомпилированную программу и выполняемую процедуру на интерпретируемом языке - разница в скорости вычислений в 100-1000 раз. Так где получается узкое горлышко? В ядре виртуальной машины и как она работает видимо.
А может не стоит ожидать скорости от трактора, хотя выжать максимум очень хочется, хотя бы для того чтобы сказать себе самому - я сделал все что возможно. :)
P.S. Могу ошибаться в канонах определений, если что поправьте.
(30) узкое горлышко 1С это получение, обработка/отображение и запись данных. Вот из этого и исходите. Не стоит пытаться выжать зам байт-код.
Оптимизируйте получение только нужных данных, их хранение для быстрого получения и записи. Передачи данных между сервером и клиентом. Обход данных.
По сравнению с вышеуказанными действия выполнение оптимизации предварительного сохранения байт-кода несущественно. Ну, если только разнести код в общих модулях. Каждый общий модуль компилируется отдельно при первом к нему обращении.
(31) Спасибо вам большое, очень сильно помогли в понимании архитектуры 1С, надо еще проштудировать ИТС, может там что есть дополнительно.
Я смотрю, начались пиар-компании по переходу на 8.4. с полным "вывертом" компетенций современного 1С-ка.
Пайтон и Жава уже ждут нас в 2022.
8.3., со своими УФ, как и клюшки, будет потихоньку мигрировать в категорию "какая-то старая прога"
(33)
главное, чтобы они опять не обновляли платформу 5 раз в месяц
и не обновляли типовые конфигурации с изменением названий ключевых сущностей
( может это будет "новый стандарт" )
Добрый день , хочу чтобы дита 15 лет, начало погружаться в один из языков программирования, чтобы в дальнейшем освоить эту профессию , вообще выбор стоит 1С или универсальные языки тип JAVA, Питон или другие,кто что посоветует, какие переспективы?
Сам программирую на 1С.
Блин. никогда не было и вот опять. )))
Начинать с 1С, ИМХО, не стоит.
Слишком специфично и узко.
Сперва что-то более универсальное. Я бы вообще предложил С, С++. Питон или java тоже можно.
java сама простая, просто пакеты-пакеты-пакеты))))
Если станет именно программистом, то выучить синтаксис нового языка - не проблема.
В универсальных узнает парадигму ООП.
Но я б все же начал с чего-то попроще. Чтобы просто понять как строятся алгоритмы.
(14) да какая разница с чего начинать. Надо начинаться с циклов и условий, а они плюс минус везде одинаковые.
(0) Начинать надо с того, что интересно. Наверное написать миниигрушку, будет интереснее чем мини учетную систему.
(0) ну а мой сын в 13 лет пытался C++ освоить для Unreal Engine. Не осилил. Слишком сложно для понимания даже в 20 ( у меня в группе в ВУЗе только половина его освоила)
(0) Питер Нортон рекомендовал сразу учить 2 языка разной идеологии, например С и Асм.
Ни с чего.
Было б программирование интересно - она давно уж там была б и не спросила, с чего начать.
ИМХО.
(14) имхо, С. Посоветовал бы паскаль, но он вообще врятли хоть как-то пригодится.
(15) Да не спорю, что есть. Вот только полностью. И структура слишком жесткая. Написать свой класс проблематично и это будет костылем)))
Опять же пофигу с чего начинать по большому счету, если брать что то не узконаправленное. Я бы задумался про того, кто учить будет, вот от него зависит больше, чем от выбора ЯП.
Думаю в будущем все придет к неким междутрансляторам.
Вообщем надо идти туда, где преподаватель хороший, который заинтересует и доступно объяснит. А дальше пытливый молодой ум сможет и сам, только направляй и подсказывай.
Да мало ли что ты хочешь. Надо смотреть, что ребенок хочет а не ты. Что ему интересно.
Учить язык ради языка и какой то там мифической перспективности это полная шляпа, это не сработает.
Нужно определиться, чем нравится заниматься, например играть в игры а значит можно -> делать игры на десктопе, или делать игры в браузере, или делать игры на андроид или делать роботов, или играть в шахматы (а отсюда разрабатывается шахматный движок), или играть в какие то стратегии (отсюда можно выйти на ИИ) Когда определится ребенок (а не ты) что ему нравится - инструмент определится автоматически.
Если есть выбор между какими то двумя вариантами всегда выбирай более сложный.
На вскидку хорошо подойдут: с++, питон, джава скрипт.
Но не подойдут: 1с, джава, фортран. (не увидишь ты на них результатов труда, и не поймешь зачем это надо) Мы же говорим про ребенка в 15 лет.
(42) У нас в школе проводили помню тесты по проф ориентации, конечно работа должна нравиться, но сталкиваюсь с тем что люди учатся по 5 лет, заканчивают вуз и не работают по специалности ,оказывается им это не нужно.
Для мужчины это основной самый сложный вопрос - чем ему заниматься в жизни. Это трудный вопрос, не все определяются даже после окончания школы.
(0) " хочу чтобы дита 15 лет, начало погружаться.."
твои желания вообще никакого значения здесь не имеют, перестань вымещать на ребенке свои нереализованные амбиции
это другой человек и у него своя дорога в жизни
Просто я хочу сказать, что если ты скажешь "изучай программирование" то это не сработает.
Лучший способ чтобы ребенок что то делал это делать это самому. Тогда он будет брать с тебя пример.
Если ты хочешь чтобы ребенок начал читать, так ты читай сам, и чтобы он видел как ты читаешь.
Хочешь чтобы он программировал, так ты покажи пример, начни делать какую нибудь игру, и доделай, и чтобы он увидел.
(41) Кстати, реальная тема. В Китае до 1 млн руб платят (не знаю точно авиакомпанию), хотя пока ребенок дорастет до капитала судна, что-то может измениться в мире. Например, людей вытеснят роботы :)
Если речь вообще про основы и прививание интереса к программированию, то скретч рекомендуют.
Если с прицелом на промышленное программирование, то ИМХО стоит сначала поднапрячься и поучить какой-то язык, который не слишком далеко ушел от "железа". То есть что-то со строгой статической типизацией, не скриптовое. С/С++ или java. Потому что в процессе так или иначе затрагивается много архитектурных моментов работы компа. А когда уже примерно понимаешь "потроха" и "кто на ком стоит", то дальше жить становится значительно проще. Легче понимание оптимизационных моментов и т.д. и т.п.
(52) по мимо денег там ещё бонус есть - физсостояние. Пить курить не будет, окружение будущих пилотов тоже
Моему 10 лет. Изучаем с++. Отправлял на скретч. Отказался. Не понравилось. Я его не заставляю. Сам просит по вечерам позаниматься с ним с++. Нанял репетитора. Колупаются там потихоньку. По мере возможности я с ним занимаюсь. Другие языки пока не трогаем чтобы не было каши.
(58) можно и так. Тут главное запустить хоть что-то. Но это если мы говорим о перспективном
а так вообще надо выявлять чем человеку интересно заниматься, какие вообще склонности есть, оттуда и плясать
если например рисовать любит то подсовывать дизайн и т.п.
(63) да нихрена им не интересно ничего. Сидят в соц сетях, смотрят блогеров, типа Эдгара Била или как его там.
(64) Согласен на 100%. На самотёк нельзя пускать. Будут только в ютубике сидеть. Надо вытеснять ютубики другими занятиями. У них полная дизориентация. Надо направлять.
если у человека прям совсем-совсем никакой мотивации нет, то как бы ты его не дрючил он рано или поздно на всё это плюнет и уйдёт в бомжи. Потому еще тебе претензию предъявит за свои потерянные годы
я считаю надо всё-таки искать для него мотивацию в первую очередь и интересы. Без этого всё бессмысленно
(69) плюс не в навыках, а в том что права на механику более универсальные
если припрет, можно самостоятельно потренироваться и ездить. а с автоматом если припрет то опять экзамен в гибдд сдавать чтоли?
(69) да пока не попробует не поймет, хотя универсального метода явно нет. Кого-то заставишь, он посидит и ему понравится, а кто-то в полную несознанку уйдет лишь потому, что заставил.
(0) Ребенок технарь или гуманитарий? Есть способности к математике или решению задачек по физике, к примеру? Если соответствующего бэкграунда нет (школа/класс с мат. уклоном, опыт участия в городских олимпиадах и т.д.) - не нужно сразу форсить C++ или, тем более, 1С - мне кажется, нет лучшего способа привить отвращение к желтым формам. Для начала что-то вроде Scratch попробовать и какие-то стартовые занятия на Python. Вспоминая себя - я ходил и на Pascal, и делал формы на Access + основы VBA были. Однако, у меня не было в школе компьютера, и по-настоящему сколько-нибудь программировать научился только на 1 курсе - все эти поиски, сортировки, стеки, очереди. Фактически, пришлось переучиваться, и на Pascal, и на C тогдашний. Т.е. не стоит переоценивать учебу в этот период, если ребенок обычный. Особого гандикапа это не даст, а за 5 лет в универе часть языков потеряют актуальность - как это случилось в моем случае с Pascal.
Scratch, Small Basic. Нечего школьнику мозги травмировать тяжелыми ЯП. Когда освоится, можно переходить на более тяжелые ЯП
скажи, а сколько в Россси платят десятицентовой армии за дезу про то, что китайцы и индусы работают за еду сидя в европейских банках в туалетах с дешовыми нетбуками для детей с 10 дюймаим, запуская там эклипс за 2 часа?
На самом деле индусы получают больше немцев и с меньшим опытом. И очень удивляются мифам про них.
индусы в отличии от китайцев и прочих азиатов, цененаправленно прут в ИТ, как когдато раньше перли в медицину. и они осилили разницу менталитетов азия-европа чтобы это получалось хорошо
ИТ очень перспективное направление. И дальше будет расширяться и больше дробится на направления.
Даже в 1С уже дробление есть
слева от меня сидит индус; получающий больше немца, сидящего рядом. Я ему передал твой слова. Ты знаешь, как смеются индусы?
Python удивителен своей способностью продвигать программирование. Он как будто является подтверждением популярной идеи «если вы знаете английский, то должны знать, как писать код». Благодаря синтаксису, напоминающему английский язык, парадигме отступов и огромному количеству библиотек другие языки по сравнению с Python начинают выглядеть бесполезными.
Python — язык программирования по умолчанию для «самой сексуальной профессии 21-го века». Да, громкие слова о данных по-прежнему сохраняют за data science репутацию «сексуальной работы», хотя современные обстоятельства уже не полностью поддерживают это утверждение. Языку Python удалось добиться того, что он позволяет решать большинство проблем data science.
Кроме того, Python также популярен в блокчейне, DevOps и кибербезопасности.
Ажиотаж вокруг Python постоянно растёт. Этот язык используется как средство кодинга в бесчисленном количестве онлайн-курсов и учебных программ.
Несмотря на всё это и вопреки всей привлекательности Python, он не подходит для начинающих в программировании. Лучшим вариантом является C.
В этой статье я расскажу о том, почему в качестве опорной точки вместо Python следует использовать C.
Мой научный руководитель однажды сказал мне: «Всегда начинай с самого сильного. Первый удар определяет судьбу боя».
Python — это высокоуровневый язык программирования. То есть Python имеет высокую степень абстракции, обеспечивающую удобство общения между пользователем и языком.
Другими словами, механизм интерпретации Python склонен закрывать глаза на ошибки, о которых другие языки программирования скорее всего сообщили бы. В нём нет объявления переменных, используется автоматическое приведение типов. Всё это упрощает программирование и превращает Python в дружественный к пользователю язык.
Любопытно, что преимущества Python одновременно являются и его недостатками. Такой подход культивирует ментальность, поощряющую нетерпеливость и лень.
С другой стороны, язык C — это язык программирования среднего уровня. Он находится между низкоуровневыми (ассемблер, машинные языки) и высокоуровневыми (Python, Ruby и т.д.) языками. С практической точки зрения из-за этого на C писать сложнее, чем на Python. Однако усилия того стоят.
C отображает истинную картину того, чем является программирование. Программисты на C преодолевают сложности, чтобы их код запускался и работал, и это стимулирует развитие хороших навыков программирования.
Разработчики на C известны тем, что кропотливо создают упорядоченный, чистый код. А поскольку процесс накопления таких навыков начинается на довольно ранних этапах, они влияют не только на программирование на C, но и на кодинг в целом.
Проще говоря, C — это отличная стартовая площадка, потому что он создаёт прочный фундамент для начинающих разработчиков. Такие основы computer science, как динамическое распределение памяти и структуры данных делают программирование сложным трудом, но в дальнейшем разработчики пожнут плоды своих усилий.
В Python меня расстраивает то, насколько нереалистичные ожидания и ложные надежды он заранее даёт. Многие люди думают, что Python — золотой билет в мир их карьеры, поэтому появляется так много новичков, стремящихся освоить этот язык.
Например, недавно в одной группе в Facebook я наткнулся на пост семилетнего ребёнка, ищущего фриланс-работу в сфере data science. Как доказательство своего опыта программирования он приложил сертификат онлайн-курса по Python.
Я ни в коем случае не хочу принизить усилия этого мальчика, ведь многие юные разработчики создают код, свидетельствующий об их мастерстве. Неприятное чувство во мне вызвало желание поиска работы в таком юном возрасте.
Увидев это, я понял, что ситуация на рынке технологий значительно изменилась. Сегодня каждый хочет освоить Python, чтобы получить обещанную прибыльную должность.
Я не говорю, что в этом вина Python. Это наша собственная вина.
Это наша вина, потому что мы обычно ставим планку слишком высоко и ведём себя так, как будто Python — это альфа и омега. Если подходить реалистично, то для успеха в современном непредсказуемом мире требуется больше, чем желание и язык программирования.
Возьмём для примера экономический спад, связанный с пандемией. Этот кризис превратил рынок труда в поле боя. Это, в свою очередь, нанесло урон выпускникам со степенью computer science, которые когда-то устраивались на работу без изматывающих поисков. Следовательно, если вы не продвинетесь дальше, чем глупый сертификат, и не сотрёте пальцы в кровь, то у вас нет ни малейшего шанса.
Да, всё так просто!
C — это хороший выбор для тренировки своих пальцев и подготовки мозга. В конечном итоге, вы как минимум получите представление о трудностях, которые вам предстоят в дальнейшем.
Python — это всего-навсего набор правил.
Правила, управляющие Python, можно реализовать в некоторых языках. Обычно название конкретной реализации состоит из аббревиатуры использованного языка и слова Python.
Например, для C есть CPython, а для Java — Jython.
Самая популярная реализация Python написана на C. Поэтому определённые знания C точно пригодятся при расшифровке кода на Python.
Кроме того, довольно многие пакеты Python, допустим, NumPy, написаны на C и его младшем брате C++ для устранения недостатков эффективности, потому что по сравнению с ними Python ужасно медленный.
Когда человек привыкает к быстрому коду, он начинает болезненно воспринимать медленно выполняемые программы. Это ведёт к стремлению создавать эффективный код, как на Python, так и на других языках программирования.
За свою жизнь я поработал более чем с пятью языками программирования, первым был C, а последним — Python.
Хотя я благодарен тому фундаменту, который приобрёл благодаря старомодному C, я совершенно точно не пристрастен к этому языку. Мои сомнения в обоснованности изучения Python в качестве первого языка программирования обрели основу, когда я поработал с разработчиками, начавшими с Python.
Я заметил, что многим (не всем) разработчикам, с которыми я общался, не хватало навыков рефакторинга. Они редко воспринимали серьёзно проблемы с исполнением программ и их волновало только создание работающего кода. На самом деле, кодинг — это нечто большее.
В этот момент я понял, что под гримом Python скрывается уродливое лицо. Лицо, которое могло бы стать красивее, если бы за ним тщательно ухаживали с самого начала.
В конечном итоге, путь к мастерскому освоению Python становится менее трудным, если есть фундамент в виде знания C.
На правах рекламы
Эпичные серверы — это VPS на Linux или Windows с мощными процессорами семейства AMD EPYC и очень быстрыми NVMe дисками Intel. Расходятся, как горячие пирожки!
Как советовали, изучил основы JavaScript и Python. Синтаксис языков нормальный.
Но стоит вопрос, на чем конкретно остановиться и изучать дальше.
Так сказать, в дополнение к 1С не помешало бы знать еще что-нибудь востребованного :)
Т.к. озвученные языки легко осваиваемы, то на позиции мидлов придется конкурировать с кучей индусов, так ли? Для явы еще много фреймворков придется выбирать, ну и в основном только вебом ограниченно будет.
В то время как Питон не только веб, но и научные вычисления, биг дата и ИИ.
А тут еще облачные технологии подоспели: беглое изучение Амазона говорит, что там можно и на Яве и на Питоне, скоро видимо все в облака перейдут.
Но есть еще и такая инфа: Питон в последнее время якобы не развивается и скоро его затмят другие языки..
Ваше мнение, что выбрать? Питон, Яву, либо другой язык или вообще технологию )
(3) чего там смотреть? там многие пустышки, другие просто копи-пасты хедхантеров, где окажется не нужно вообще кодить.
(0) Ява это мотоцикл. Про фреймворки в джаваскрипт вообще не слышал, наверное речь о джаве. Джаву легко и быстро освоить не получится. Да и в дополнение к 1с это ни чего не нужно
(10) вообще-то в России несколько устоявшихся названий - Ява, Джава и тд
(0) Андройд разработка боле менее чехарды с технологиями нет как в вебе так как фактически ритм задаёт только гугл
(14) парни говорят, что лучше в iOS идти разрабом, якобы там нет зоопарка устройств и не нужно подо все тестировать приложения
(16) это мелочи по сравнению с зоопарком феймворков и технологий в вебе которые к тому же постоянно мутируют
(19) так сейчас в мобильных приложениях такая тенденция наметилась, что приложение это всего лишь оболочка сайта в версии для телефона
(22) но сейчас же в тренде облачные технологии, биг дата и ИИ - там везде уже нужен Питон
(23) ну в тренде, само собой. Но если представить, что вот прям ЗАВТРА надо работу искать, то вакух по PHP или Java в разы больше, чем по Питну, даже сравнивать смысла нет. С др. стороны, это не означает, что на Питоне работы нет итд Просто если исходить из того, что осваивать что-то СЕЙЧАС максимально востребованное. А что там тренд нам принесет - хз..
(24) так изучение чего-то с нуля для нормального приема в мидлы занимает обычно год-два, вот что через это время будет востребованнее?
я бы между питоном и явой выбирал, js это для фронтовиков. всех прям магнитом туда тянет. хз стоит ли туда тоже ломится плюс там нет бизнеслогики (извращенцев пишущих на ноде не считаем) тупое формоклепание
(28) ой, для бизнеса наверное лучше Excel как спец освоить, вроде за бугром на нем до сих пор отчеты делают и бухию считают )
(33) это не настолько востребовано как кажется, и хороший менеджер рубит в экселе похлеще любого нашего одинесника
(34) мало настоящих миддлов, я уже на 3-й работе работаю и везде проблема найти человка на вилку 150-250 (python)
работаю в компании группы мейлру, которая собирает статистику с медиасервисов. внутренний софт программлю для этих задач
(43) я год работал удаленщиком на питоне хотя и сидел в Москве и контора была Московская, они после года поиска человека в офис начали заманивать уже удаленкой чтобы хоть когото найти
(2) \ попробовал основы го, но препод был нудный, ничего не объяснял, и с нуля как то только типы нормально понятны остались, остальное - смутно )
(45) подскажи хорошие ресурсы с инфой по питону, а то я на начальном уровне застрял
курс, который проходил, застопорился в одной задаче - не проходил по времени, никто не подсказал - где я напортачил и я забросил ))
(48) официальный мануал ;))
вообще моей первой задачей было сделать довольно крупный проект с мобильными приложениями и админкой. я взял джангу и по её стандартному мануалу наваял.
p.s. не рекламирую джангу ниразу, но у неё мануал неплохой
p.p.s. мне не особо нужны были основы питона учитывая что у меня был опыт в других языках
с го кстати сложнее так переключатся, там они решили свой велосипед построить и яростно борятся со своим же самоделием
p.s. вообще я больше люблю яву и шарп. они более логичные и стройные, хорошо когда программа с абстракций начинается, а не "сначала кодим, потом думаем и ловим ошибки рантайма"
(51) яву и сишарп очень сложно потом переделывать, на го же микросервисная офрелигия, если что легко перепилить по частям
Но если вам джава кажется стройной, то лучше не надо
(57) сервер один на все сервисы какбы
да и это не особо и проблема на самом то деле
(57)+ в го на выходе бинарники, хоть под линукс хоть под винду .exe хоть под что угодно, легковесные и все ресурсы утилизирующие
А в жабе чтобы на каждый инстанс свой микро запустить сколько там сервер каждая копия кушать будет?
Короче жаба это примерно как 1С - кровавый энтерпрайз и дикое легаси.
Для стартапов в смысле новых и динамичных проектов херово подходит.
(61)+ Представьте сто в одной конфе смешан код на 7.7 на 8.0, на 8.1 и т.д. )) Вот это классическая жаба
(60) в контейнерах если точнее. но да, с явной надо какойнить томкат таскать хотя он кластеризуется
(61) зато я своими глазами видел когда к питону начинают приворачивать статическую типизацию, абстрактные классы, самопальные интерфейсы, потому что динамичный проект сначала динамичный а потом охренеешь такую мешанину поддерживать. с го конечно попроще, но там странное представление о нужности ооп
(62) да, это я видел, у меня была задача перетащить пару проектов с 1.4 на 1.6 причем с нетиповой jvm (от ibm, а не оракл)
(0)
HTML
CSS
Bootstrap
laravel для сервера
vue для клиента
И можно написать любую веб приложуху.
Зачем эти абстрактные сиплюсплюсы?
lavarel+vue это получается фуллстек, и на любом сложном проекте кукушка поедет, сейчас модно в какуюто одну сторону идти
фронт это не просто html+css+bootstrap, там надо react/angular и всякую черную магию из всяких npm/webpack/babel и прочую чертовщину знать
+ и решать вопросы 'а почему у меня на iphone 4s не работает кнопка на вашем сайте? и в firefox 60 пустая страница вместо сайта?' . а у вас ещё 10 задач на беке висит. более важных
(65) "всякую черную магию из всяких npm/webpack/babel "
Конструктором из вуя создаётся вполне рабочий конфиг, даже не требующий прикладывания рук
(69) *сайт
помню у нас фронтовик страшно матерился потому что один из заказчиков юзал IE8/9, ради него тонну костылей держали
(69) тебе кстати знание СКЛ помогло в питоне? в Джаве кстати на собеседованиях как я понял уровень скл не очень мягко сказать
(71) помогло, вообще беку надо знать sql, вообще я крайне разочаровался в 'магии ORM, больше не надо писать код на sql' когда пришлось вручную лопатить запросы которые оно генерит. а оно такое генерит . ужас..особенно в джанге
(73) а что такое веб?
бек большинства сервисов, например онлайнбанки, написаны на яве
(78) это зависит от того кто ваш пользователь
Если у вас в клиентах какойнить газпром будет, будете пилить vue так чтобы он и на lynx работал и картинки в консоли показывал
(81) ну я и говорю что бек на ней делают
фронт давно никто не пишет (из нормальных людей) со стороны сервера (разве что битриксы)
(0) а чего PHP пропустил? О вэбе же речь. Повелся на антихайп "PHP мертв"? :) Что то hh сильно об обратном говорит.
Кто реально c PHP дело имеет. Много приличной работы на php уровня выше вордпрес?
(72) насколько сложные запросы? Просто есть миф или не миф, что в 1С суперсложные запросы, а в других местах все проще. Запросы много рабочего времени занимают?
(52) По скале меньше вакансий чем по многим другим языкам, но и кандидатов существенно меньше. Мой основной языка скала, но я бы не рекомендовал с него начинать. Самый большой плюс скалы, что как правило, если проект на скале, то он будет интересным. Такой себе естественный фильтр.
(0) Равнозначно, что пайтон, что JS. Выбирать можно по субъективным предпочтениям, в любом случае не проиграете если изучите глубже.
(83) " в 1С суперсложные запросы " - этот миф родился из выступления Бартунова
имеется ввиду попадающие на выполнение северу sql-запросы, которые получаются из запросов после обработки их 1С:платформой, транслированные.
(83) я бы не сказал что суперсложные по отдельности, но если смотреть в общем то сам сервис их делающий и настройки sql серверов которые обеспечивает их формирование. то крындец какие сложные бывают
как пример: делается выборка из большой таблицы, создается промежуточная, туда джойнятся еще штуки три таблицы, потом ещё добавляются поля из ещё сторонних источников через jdbc (это делается силами БД) и из этого всего формируется отчет миллионов на 5 строк и весом несколько гигабайт и параллельно есть несколько серверов с кешем самого сервиса чтобы сократить сопутствующие запросы, в каждой из таблиц по паре сотен миллионов записей, БД специально настроена под выборку конкретных полей и данных чтобы запросы из критических таблиц выполнялись не дольше чем 5 минут и не вешали прод
Читайте также: