Python и только Python практически для любых задач программирования![закрыто]

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/15397

  •  22-10-2019
  •  | 
  •  

Вопрос

Я ошибаюсь, если думаю, что Python — это все, что мне нужно освоить, чтобы решать большинство распространенных задач программирования?

РЕДАКТИРОВАТЬМеня не устраивает изучение новых языков программирования, если они не учат меня новым концепциям программирования и решения проблем;Отсюда и возникла идея освоить современный, быстро развивающийся язык программирования с богатым набором библиотек классов, широко используемый и документированный и, конечно же, имеющий «дружественную» кривую обучения язык программирования.

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

Это было полезно?

Решение

Вы правы и не правы.

Верно: Знание одного инструмента очень хорошо очень хорошо продается и желательно. И Python хорош для OO, для сценариев, для функционального программирования, и он имеет превосходные математические и научные библиотеки.

Неправильный: Python не учит вам всему, что должен знать хороший разработчик. Иногда вам понадобится JavaScript, чтобы предоставить некоторую функциональность на стороне клиента. Иногда вам нужно понять, что происходит на более фундаментальном уровне, например, C под питоном. И иногда вам нужно научиться думать по -разному, как и с Хаскеллом или Клоюре.

Другие советы

Да

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

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

Я не могу придумать лучшего способа выстрелить себя в ногу. Изучение и освоение языка - это здорово, но вы упоминаете, что вам не нравится изучать новые языки, если они «Не учите меня новым понятиям программирования и решения проблем».

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

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

Я не уверен, что в этом есть что-то плохое, но я бы не советовал этого ради вашей карьеры.Есть пара проблем, о которых я могу думать:

  1. Python сейчас популярен, но будет ли он популярен, скажем, через 5-10 лет?Не знаю, как вы, но я не желаю в будущем становиться эквивалентом программиста мэйнфреймов на языке COBOL.
  2. Python не будет достаточно быстрым для каждой задачи.С ним можно многое сделать, но являются задачи, для которых Python сам по себе недостаточно быстр.В этих случаях вам нужно либо знать C (если есть какой-то конкретный фрагмент кода, который будет работать медленно), либо язык JVM (если вам нужно, чтобы все работало быстро или вы беспокоитесь о безопасности).

Меня не устраивает изучение новых языков программирования, если они не учат меня новым концепциям программирования и решения проблем.

Лично я не видел особых преимуществ в греческой кухне, пока не попробовал ее.Однажды попробовав, я пожалел, что так долго откладывал это.Конечно, еда — это не язык программирования, но аналогия на самом деле не так уж далека.Зачастую единственный способ увидеть преимущества изучения нового языка — это попробовать его.

Пол Грэм назвал это «Парадокс Клуба»:

Программисты очень привязываются к своим любимым языкам, и я не хочу задеть чьи-либо чувства, поэтому для объяснения этого момента я собираюсь использовать гипотетический язык под названием Blub.Блаб попадает прямо в середину континуума абстрактности.Это не самый мощный язык, но он более мощный, чем Кобол или машинный язык.

И на самом деле наш гипотетический программист Blub не стал бы использовать ни один из них.Конечно, он не стал бы программировать на машинном языке.Для этого и нужны компиляторы.А что касается Кобола, то он не знает, как с ним можно что-то сделать.У него даже нет x (функция Blub на ваш выбор).

Пока наш гипотетический программист Blub смотрит вниз, на континуум власти, он знает, что смотрит вниз.Языки, менее мощные, чем Blub, очевидно, менее мощные, потому что в них отсутствуют некоторые функции, к которым он привык.Но когда наш гипотетический программист Blub смотрит в другую сторону, вверх по континууму власти, он не осознает, что смотрит вверх.То, что он видит, — это просто странные языки.Он, вероятно, считает их примерно такими же по силе, как Блаб, но с учетом всей этой ерунды.Блаб для него достаточно хорош, потому что он думает на Блабе.

Однако, когда мы переключаемся на точку зрения программиста, использующего любой из языков, находящихся на более высоком уровне континуума власти, мы обнаруживаем, что он, в свою очередь, смотрит на Блаба свысока.Как можно что-то сделать в Blub?У него даже нет y.

По индукции единственные программисты, которые могут увидеть все различия в мощности между различными языками, — это те, кто понимает самый мощный из них.(Вероятно, именно это имел в виду Эрик Рэймонд, говоря, что Лисп сделает вас лучшим программистом.) Вы не можете доверять мнению других из-за парадокса Блаба:их устраивает любой язык, который они используют, потому что он определяет их отношение к программам.

Если у вас будет возможность, рекомендую прочитать всю статью.

И, наконец, я понимаю вашу точку зрения с точки зрения желания специализироваться.Но я не думаю, что это то, что вы пытаетесь сделать.По определению, выполнение «почти любой задачи по программированию» — это не то, что я бы назвал специализацией.Похоже, вы используете Python для обобщения.Если вы хотите специализироваться, я бы порекомендовал заняться определенной областью программирования, например машинным обучением, хранилищем данных или интеграцией.Но язык программирования сам по себе не является особой специализацией.

Python (несмотря на мои опасения по этому поводу) просто не может^H^H^H^H^HНельзя использовать для всего, так же, как мои скользящие плоскогубцы не используются в качестве отвертки.

SQL? Хранимые процедуры? Скрипты запуска? HTML (уже упоминается) и XSLT? C Библиотечные обертки?

Я не думаю, что Python будет очень хорош для встроенных микроконтроллеров, которые могут иметь только 32 тыс. Флэш и 4K оперативной памяти, но им нужно обрабатывать 25 000 прерываний в секунду.

(PS Я ничего не имею против Python, на самом деле я недавно купил Pycharm 1.0 от Jetbrains. Я просто не считаю это как общее, например, C. Можете ли вы написать весь Python само по себе?)

Я думаю, что формально вы правы, поскольку Python, будучи тьюринг-полным языком программирования, должен позволять решать практически любые задачи, которые могут решить компьютеры (особенно с помощью некоторых библиотек).И вы, вероятно, могли бы с комфортом зарабатывать на жизнь, полностью находясь в сфере Python.

Однако я думаю, что вы ошибаетесь на нескольких уровнях:

  1. Вы привязываетесь к инструменту.Это похоже на то, как механик говорит, что определенный тип гаечных ключей — это все, что ему нужно.Языки — это инструменты.Хороший программист должен использовать лучший инструмент для решения задачи (конечно, в пределах своей среды), каким бы он ни был, и понимать, что не существует инструмента, который мог бы быть лучшим для всех задач.
  2. Вы искусственно ограничиваете свой кругозор.Языки — это инструменты, но за ними стоят характеры и идеи.Если вы для всего используете только один из них, вы отказываете себе в возможности нового взгляда на вещи, нового подхода к решению проблем, нового образа мышления.
  3. Кажется, вы путаете достижение успеха в своей профессии с умением использовать какой-либо конкретный инструмент.Хороший программист может использовать любой инструмент, потому что он понимает основные принципы, лежащие в основе создания и использования этих инструментов, и может определить, как и зачем использовать каждый из них.Я считаю ошибкой концентрироваться на том, чтобы стать хорошим Питон программист вместо того, чтобы получить хорошую программист (это может случиться при написании программ на Python, когда представится случай).Не поймите меня неправильно: первое допустимо, но конечной целью должно быть второе.И последнее несовместимо с «Python — это все, что мне нужно».
  4. Эмоциональные вложения в инструмент могут привести к фанатизму, а фанатизм приведет к игнорированию более эффективных решений и вместо этого к трате усилий на то, чтобы заставить Python делать то, для чего он не предназначен.Не поймите меня неправильно: интересно взламывать вещи, чтобы заставить их делать то, для чего они не предназначены (например, собрать машину из старой ванны и воздуходувки или написать ядро ​​ОС на Python), но если и когда вы Чтобы стать человеком, способным принимать решения в проектах, требующих реальной эффективности, вы должны знать как сильные, так и слабые стороны своих инструментов.А эмоциональные вложения заставляют преувеличивать сильные стороны и игнорировать слабости.

Я бы не сказал, что ты вообще неправ. Python-это многодоменный язык программирования общего назначения.

Это действительно зависит от отрасли, которую вы планируете войти. Я бы сказал, что в Java или .NET доступно гораздо больше рабочих мест, чем Python (не то, что с Python есть что -то не так. Больше людей, использующих эти два языка применения, означает, что у них есть, в значительной степени вниз (в риске кого -то оскорблять), самая широкая база знаний и большинство доступных средств. В мире Business App поддержка Framework является огромной частью оставшегося конкурентного.

Python-это чрезвычайно гибкий язык программирования общего назначения, он использовался для написания почти всего, что можно понять, кроме ядра OS (быстрое обновление: на самом деле это имеет: http://mail.python.org/pipermail/python-annonce-list/2004-july/003220.html).

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

Хотя вы правы, что вы должны освоить хотя бы один язык, изучение другого языка редко, если когда -либо пустая трата времени. Даже самый ужасный язык программирования (я не скажу имя, потому что это может оказаться в кровавой религиозной войне :-)) есть некоторые функции, которые заставили меня подумать: «Эй, почему Java/ C/ C/ сделать это? ".

Кроме того, на сегодняшний день нет идеального языка. Хотя Python приближается к нему ^^.

К тому времени, когда вы освоили Python, вы узнаете, сможете ли вы сделать все в нем.

Ответ придет к вам естественно.

Это было бы похоже на гольф, говорящий, что он будет играть только с 5 железом. Вы можете сделать это (или мне сказали), но это не всегда лучший выбор. Есть много вещей, которые Python делает хорошо, но иногда это не лучший инструмент для работы!

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

1) C-C ++-это основы всего в мире ПК. ИМО, если вы не знаете C-C ++, вы не знаете, как программировать для ПК. Рассмотрим C -C ++, как исчисление и статистика в колледже - обряд прохода.

2) быть Универсальный - Положите палец в как можно больше пирогов, и всегда смотрите на то, что нового, не попадает в какую -либо конкретную причудливую или идеалогию.

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

Hth

Я хочу видеть, как вы пишете в Pure Python:

  1. Управление полом на заводе, безопасность в реальном времени, гарантированное время реакции на 300 мс.
  2. Автомобильная сигнализация с дистанционной прошивкой, должна поместиться в ладонь.
  3. Двигатель базы данных, предназначенный для> 1000hits/s
  4. Операционная система, любая реальная (физическая) аппаратная платформа. Может быть очень просто.
  5. Биос для ПК,
  6. конкурентный (= быстрый) компилятор Python/интерпретатор
  7. Упознавание объекта в прямом эфире для 25 кадров в секунду.
  8. Современный, конкурентный игровой двигатель для динамических игр FPS
  9. Веселая динамическая игра в Arcade WebApp
  10. Антивирус.

Завершите половину этих задач в Python, и я признаю, что Python - король.

Лицензировано под: CC-BY-SA с атрибуция
scroll top