Не начинайте учиться кодингу с Python, начните с языка C
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 приготовлен на 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. Расходятся, как горячие пирожки!
Python или C++: что лучше? Давайте узнаем!
После прочтения этой статьи у вас сложится полное понимание того, какой язык программирования вам лучше выбрать Python или C++.
Обновлено: January 01, 2023
Программирование может быть действительно интересным и прибыльным способом развить вашу карьеру, но есть некоторые вопросы, которые вам нужно решить, прежде чем приступить к изучению этого навыка. Первый вопрос для тех, кто решит хочет изучить программирование с нуля является выбор языка программирования (например, Python или C++). До того, как вы начнете изучать любой язык вам следует понять, с какой целью вы будете изучать его. Сделать правильный выбор будет сложно, особенно если вы новичок. Именно поэтому в этой статье мы разберем в чем язык Python превосходит язык C++, или же наоборот.
Я предполгалаю, что у вас нет никакого опыта в программирование и поэтому мы начнем с того, что разберем саму профессию программиста и какие у нее есть преимущества. Даже если вы уже продвинутый программист, эта информация освежит ваши знания. После этого мы рассмотрим каждый язык программирования в отдельности. Затем определим критерии сравнения и сможем ответить на вопрос «Python или C++: как начать программирование с нуля?».
Содержание
Введение
Мы определились, что программирование является отличной возможностью для развития вашей карьеры. Но почему это так? У каждого человека свои причины, почему он изучает программирование. Но существует определенные причины, которые свойственны всем.
Прежде всего, востребованность работы. Вы наверное много раз слышали о том, что на рынке труда нехватка программистов. Рынок труда в любой момент нуждается в профессиональных программистах. Все, что вам нужно сделать, это сделать простой поиск в Google а запросом «работа программиста» или «работа кодера», и вы увидите бесконечные списки предложений (это варьируется от вашего места жительства). И это тесно связано с темой Python или C++.
Каждый день появляются новые компании, которые занимаются веб-разработкой. Этим компаниям нужны профессиональные программисты, чтобы развивать свои платформы. Но компании не ограничиваются специалистами только в одном языке программирования. Все зависит от проекта, над которым они работают. Помимо этого темы сравнения «Python или C++» популярны. Люди часто пытаются узнать, для чего создан каждый языки подходит ли он под цели, которые ставит программист перед его изучением.
И как же не упомянуть вопрос зарплаты программиста. Это, наверное, одна из первых тем (к сожалению, часто единственная), которую люди вспоминают, когда обсуждают, стоит ли становиться программистом.
Область ИТ (или, если более конкретно — отрасль компьютерных наук) имеет репутацию одной из самых прибыльных отраслей. Аналитики данных и ученые, разработчики программного обеспечения и веб-программисты — это всего лишь несколько профессий, которые зарабатывают на жизнь тем, что они делают. Хоть зарплата не является пунктом номер один, но она находится в топе по заработкам среди всех профессий.
Как вы видите, программирование — это отличный карьерный путь — и одна из самых обсуждаемых цен. С учетом сказанного, давайте перейдем к сравнению Python или C++ и сперва разберем каждый отдельно и начнем с Python.
Самые Полюбившиеся Статьи
Ищете более подробную информацию по какой-либо связанной теме? Мы собрали похожие статьи специально, чтобы вы провели время с пользой. Взгляните!
Что Такое Дополненная Реальность: Разбираемся в Работе AR
Понимание, что такое дополненная реальность будет важным для изучения новейших технологий. Прочитайте руководство, чтобы узнать необходимую информацию!
Как Стать Учителем: Со Степенью и Без Неё
Мечтаете стать преподавателем? Узнайте, как стать учителем со степенью и даже без неё, а также быть частью сообщества учителей.
SQL Онлайн: Топ -10 платформ для практики
Лучший SQL онлайн тренажёр. Узнайте, где лучше всего решать SQL задачи и практиковаться в работе с SQL. Онлайн платформы и эмуляторы.
Python
Python, созданный еще в 1991 году Гвидо ван Россум, является языком программирования общего назначения, основная функция которого это легкость его чтения. С самого начала язык Python задумывался как максимально простой в использовании. На самом деле простота — это то, чем он известен — в Python используется большое количество пробелов, таким образом код остается легко читаемым, это обеспечивает приятное и простое обучение.
Из-за своей простоты язык Python часто становится предметом споров. Вы можете подумать — с чего бы это? Разве простота это плохо? Хоть простота это преимущество для начинающих, опытные программисты придерживаются другого мнения (это важный момент в сравнении Python или C++).
Python — это язык программирования высокого уровня. Это означает, что задействовано небольшое количество фактического кодирования — вместо этого большая часть синтаксиса Python написана аналогично обычному, повседневному английскому языку. Опять-таки это хорошая новость для тех, кто изучает программирование с нуля. При этом матерые программисты говорят, что это убивает весь дух программирования. По их словам, если новичок выбирает «легкий путь», он или она упустит возможность приобрести сверхценные навыки решения проблем, рационального мышления и не изучит основы, на которой строится вся отрасль.
Несмотря на то, что вопрос Python или C++ остается открытым, язык Python обладает важной особенностью. Он подходит под любые проекты — этот язык весьма универсален. Рабочий стол, веб-разработка, обработка данных — все, что вы хотите!
Это была вся информация про язык Python, которая нам пригодится в сравнении Python или C++. Теперь давайте продолжим и поговорим про язык C++.
Как и Python, C++ — это язык программирования общего назначения, который используется в повседневных задачах и он очень хорошо адаптируем. Последняя особенность очень важна (в сравнении Python или C++ у обоих языков эта особенность есть). Это означает, что язык программирования более или менее объектно-ориентирован и, следовательно, способен работать быстрее и эффективнее.
Язык C++ был создан ученым по имени Бьярн Страуструп еще в 1979 году. Хотя изначально он назывался «C с Классами», имя было изменено на «C++» с добавлением нескольких функций в 1983 году. Имейте в виду, что это супер короткая версия того, как появился язык C++ — за этим стоит целая предыстория, но это не наша цель.
Язык C++ является противоположностью Python, если мы говорим с точки зрения простоты. На самом деле он считается одним из самых сложных (если не самый сложный) языков программирования. Его сверхсложный синтаксис позволяет C++ быть чрезвычайно гибким — это основная причина, почему его часто выбирают для работы с проектами, которые разрабатываются для нескольких различных платформ одновременно.
Я уже упоминал в начале сравнения Python или C++, C++ (так же, как Python) также объектно-ориентированный язык программирования. Я уже говорил, что это делает язык быстрым и эффективным, но я так и не объяснил, что на самом деле означает «объектно-ориентированный».
Объектно-ориентированный язык программирования обладает способностью выполнять процессы, одновременно игнорируя мелкие, менее важные детали. Проще говоря, эти языки имеют определенные специфические особенности, которые позволяют им понять контекст, стоящий за задачей, без глубокого анализа деталей. Это, в свою очередь, значительно ускоряет процессы, выполняемые с помощью этих языков. Большинство современных языков программирования высшего уровня являются объектно-ориентированными.
Итак, теперь, когда мы знаем немного про сами языки программирования, мы можем перейти к сравнению с Python или C++ и разобрать их по определенным критериям.
Критерии анализа
Когда мы начинаем сравнивать языки программирования хочется не упустить из виду ни один аспект. Чтобы сэкономить время и не затягивать сравнение Python или C++ дольше, чем нужно, мы упомянем несколько наиболее распространенных критериев.
В этой статье мы рассмотрим три момента: скорость, популярность и зарплата специалиста. Рассмотрим каждый из этих пунктов в отдельности.
Скорость
Что касается скорости Python или C++, то это самый обсуждаемый вопрос на форумах по поводу сравнения этих двух языков. И это не без оснований! Хороший язык программирования должен быть быстрым, иначе он будет неэффективным и не сможет сравниться с другими более быстрыми языками. На самом деле добавить что-то еще к этому нечего — эти два языка программирования, о которых идет речь, достаточно быстро взаимодействуют и в отношении их скорости разницы нет.
Популярность
Хотя на первый взгляд это может показаться тривиальным, но на самом деле это действительно важно для нашего сравнения. Сейчас я уточню.
Популярность означает, что язык программирования всё делает правильно. В конце концов если язык программирования бесполезен, то им бы никто не пользовался, верно?
Тем более изучать популярный и востребованный язык программирования проще и приятнее, чем тот, которым никто не пользуется и на который нет спроса. Развитие определенных языков связано с некоторыми факторами — интернет-ресурсами и сообществами. С непопулярными языками найти человека, который мог бы поделиться информацией не просто сложно, бывает вообще такую информацию не найти в интернете.
Вы когда-либо хотели узнать, какие платформы для онлайн обучения лучше всего подходят для вашей карьеры?
Зарплаты специалистов
Честно говоря, этот пункт самый очевидный для всех.
Как я уже упоминал в начале статьи сравнения Python или C++, программирование действительно очень прибыльная профессия. Тем не менее специалисты в различных языках программирования также зарабатывают по-разному. Это объясняется многими причинами: некоторые компании ставят конкретные требования к специалистам по знаниям языка, другие компании не имеют конкретных требований. Как бы то ни было, факт остается фактом — не все языки имеют одинаковую зарплату.
Python или C++
Мы подошли к самому интересному, сравнению Python или C++. К концу вы узнаете и сможете самостоятельно определиться с выбором того, какой язык программирования вам изучать.
Какой из них быстрее?
Поскольку скорость в сравнении Python или C++ является важным аспектом, о котором мы сначала поговорим.
На первый взгляд после поиска в Интернете, кажется, что C++ более быстрый. Считается, что C++ более быстро исполняется, главным образом потому, что его конкурент — Python — написан на C. Как я уже упоминал, C++ часто рассматривается как самый быстрый язык программирования.
Сейчас мы разобрались с вопросами скорости в сравнении Python или C++, давайте перейдем к популярности.
Какой язык более популярен?
Несмотря на то, что это сложный критерий в оценивании, очевидно, что у Python, и у C++ есть много поклонников в Интернете. Поскольку сейчас решают цифры, можно уверенно сказать, что все зависит от группы людей, про которую мы говорим, — начинающие программисты, как правило, начинают с Python, в то время как те, у кого уже есть опыт, проявляют интерес к C++.
- Простой в использовании
- Предлагает качественный контент
- Очень открытый в своих ценах
- Бесплатные сертификаты об окончании
- Фокус на навыки науки о данных
- Гибкое расписание занятий
- Простой дизайн (без бесполезной информации)
- Хорошее качество курсов (даже бесплатных)
- Разнообразие возможностей обучения
- Программа Nanodegree
- Подходит для корпоративного обучения
- Платные сертификаты об окончании
- Огромное разнообразие курсов
- Простая навигация
- Нет технических проблем
- Огромное разнообразие курсов
- Политика 30-дневного возврата средств
- Бесплатные сертификаты об окончании
Чья зарплата выше?
Если вам до сих пор тяжело сделать выбор между языками программирования, то следует рассмотреть вопрос зарплат.
Согласно сайту Glassdoor.com, разработчики Python могут рассчитывать на получение в среднем 92 000 долларов США в год, что примерно составит 7670 долларов США в месяц. Ожидается, что разработчики C++ будут зарабатывать около 95 000 долларов в год или почти 7920 долларов в месяц. Что эти зарплаты говорят нам?
Разница очень низкая, и это довольно удивительно. Это странно, потому что C++ считается очень сложным языком программирования для изучения, в то время как Python стремится к простоте. Честно говоря, эта небольшая разница в зарплате может быть лишь одной из основных причин, почему все больше и больше людей выбирают изучение Python.
Самые Популярные Статьи
Взгляните на нашу коллекцию руководств, статей и уроков про платформы для онлайн обучения и массовые открытые онлайн курсы. Всегда будьте в курсе и принимайте взвешенные решения!
Что Такое Дополненная Реальность: Разбираемся в Работе AR
Понимание, что такое дополненная реальность будет важным для изучения новейших технологий. Прочитайте руководство, чтобы узнать необходимую информацию!
Курсы Рисования Skillshare: Лучшие Уроки Для Демонстрации Вашей Креативности
Станьте удивительным художником, пройдя отобранные вручную курсы рисования Skillshare!
Сколько зарабатывает графический дизайнер? Полное руководство
Хотите узнать, сколько зарабатывает графический дизайнер? Ответ на этот и многие другие вопросы, касающиеся этой специальности в этой статье.
Заключение
Итак, мы подошли к концу нашего сравнения Python или C++. Вам удалось выбрать из двух? Или вы все еще не уверены?
Если честно, оба языка имеют свои плюсы и минусы. Если мы сравниваем два языка программирования, все упирается в то, какие у вас предпочтения.
Какой бы язык вы ни выбрали, я надеюсь, что эта статья принесла вам больше ясности. Удачи!
Оставьте ваше честное мнение
Оставьте ваше честное мнение и помогите тысячам людей выбрать лучшую платформу для онлайн обучения. Все отзывы, позитивные или негативные, будут приниматься, если они честны. Мы не публикуем предвзятые отзывы и спам. Поэтому, если вы хотите поделиться вашим опытом, мнением или дать совет — у вас есть всё необходимое!
Программирование: C# vs. Python для новичка
По многочисленным (больше нуля) заявкам мною было решено собрать небольшое сравнение языков C# и Python для новичка, а также удобство их применения для написания скриптов и утилит. Это будет простое, не слишком глубокое сравнение тех фич, которые я знаю в этих языках, и конкретного вывода я делать тоже не буду, короче — думайте сами.
Ну и, обязательно, дисклеймер: я — не профессиональный программист, я не слишком глубоко разбираюсь в Питоне, а тем более в C#, и поэтому всё нижесказанное лишь отражает мой опыт использования этих языков. Возможно я не прав, возможно я вообще неправильно их использую, но это то, как я их вижу. Всё.
Итак. Пожалуй, надо бы разбить сравнение на несколько категорий, чем я сейчас и займусь.
Синтаксис и простота вхождения
Всякий раз, когда меня некоторые спрашивают, почему я советую Питон для обучения, я всегда первым критерием привожу его простоту. Питон был изначально сделан так, чтобы походить на английскую речь, поэтому многие выражения в нём очень натурально читаются (если вы знаете английский, конечно), особенно если использовать подходящие названия переменных. К тому же, благодаря простому синтаксису, в нём отсутствуют различные не очень понятные (особенно новичку) или просто не слишком лаконичные конструкции, типа синтаксических скобок («начало-конец», » < . >«), кастов (» int x = (int)y; «), огромного количества слов-модификаторов (» public static const string s = «Hello»; «), различных Си-подобных конструкций и различных способов инициализации переменных. Это в принципе делает код на Питоне более близким к написанному на бумаге алгоритму, отчего код на нём гораздо легче понять сходу. Это же позволяет практически без правок переписать код с бумаги в скрипт и получить работающую программу.
В C# же, благодаря языковой наследственности, можно увидеть огромное количество ушей и хвостов от C++ и Java, что изначально выражается в Си-подобном синтаксисе. Поскольку этот синтаксис довольно распространён, то обучиться ему не помешает, но нужно понимать, что детали в различных языках всё равно разные (так можно и на JS начать учиться). C# имеет статическую типизацию, что в синтаксисе выражается указанием типа при инициализации и последующим его соблюдением. Также это означает, что шаблонные типы, типа словаря, придётся описывать явно (например, Dictionary<IPAddress, NetworkInterface> — словарь с ключами типа IP-адреса и значениями NetworkInterface), что несколько добавляет мусора в код, как мне кажется. Ещё синтаксис делает необходимым соблюдение определённых правил при написании собственных методов или наследовании классов, что сопровождается ещё одним потоком слов-модификаторов. В Питоне это всё тоже лучше понимать, но синтаксис там почти не мешает коду. Не стоит также забывать о блоках кода — все блоки кода должны быть обёрнуты в фигурные скобки, а все условия — в круглые. Питон избегает всего этого, используя обязательные отступы (которые ещё и помогают красиво оформлять код).
А из аналогичных решений в синтаксисе можно выделить, например, LINQ в C# и «List/Dict comprehension» в Питоне. Оба приёма позволяют на месте создавать список с данными и обрабатывать его, разве что выглядят по-разному и имеют несколько разные возможности. Оба языка позволяют у любого объекта (даже числа или строки) вызывать классовые методы, что очень удобно по сравнению с C++. Оба самостоятельно заботятся о памяти и имеют свой сборщик мусора. Да и, честно говоря, во многом они даже похожи, если не принимать во внимание наличие статической типизации в C#, так что для написания кода тут выбор будет скорее по вкусу.
Впрочем, нужно упомянуть некоторые отличия в реализации простых программ. Если в Питоне программа является всего лишь скриптом, который можно запустить из одного файла (или даже ввести в интерактивной консоли), то в C# редактируется проект, со своим главным классом, пространством имён и файлом проекта с описанием необходимых модулей. Т.е. если в Питоне для «хэллоуворлда» достаточно открыть файл и записать в него одну строчку, то в C# для написания это строчки придётся создавать целый проект. (Который, будем честны, можно записать в один файл, но всё равно это потянет за собой обвязку в виде «using» и своего пространства имён.) Конечно, по большому счёту при написании чего-то более длинного разницы особо нет, но всё же Питон имеет здесь преимущество, так как позволяет настрочить небольшую программу хоть в nano .
Подводя итоги первого раунда, хочу сказать, что Питон, как мне кажется, гораздо более мягок к новичкам — он не требует вызубривания сложного синтаксиса, он не заставляет пользоваться сложными конструкциями для простых вещей, он не выглядит перегруженным и позволяет сосредоточиться на коде, а не на правильности синтаксиса. К тому же, в нём зачастую гораздо проще прослеживается ход выполнения программы, благодаря той же простоте синтаксиса. В общем, мне кажется, что Питон — очень удачный язык для начала обучения программированию, позволяющий сосредоточится на написании алгоритма, а не выборе типов, изучении ООП или разборках с синтаксисом.
Удобство написания скриптов
Наверное, стоит упомянуть, что программы на Питоне на то и называются скриптами, что они скрипты и есть — это просто файлы с кодом, которые можно с лёгкостью выполнить интерпретатором. А ещё их можно открыть в любом редакторе, отредактировать и тут же снова запустить. Это мне кажется очень жирным таким плюсом, особенно когда под рукой нет среды разработки/компилятора. Ну и ещё в них очень легко можно использовать код из других скриптов, благодаря простой системе импорта. Добавьте к этому то, что благодаря простому синтаксису их довольно просто править, и по своей сложности они оказываются не сильно сложнее (а то и проще) скриптов на Bash. Конечно, Питон не настолько быстр и лёгок для мелких скриптов, как Bash (хотя числодробить лучше всё-таки на нём), он всё же имеет право на существование, так как сильно облегчает само написание кода. И на нём, кстати, гораздо проще писать кроссплатформенные скрипты, которые даже не нужно будет перекомпилировать.
И ещё, в качестве минуса Питона можно выделить необходимость установленного интерпретатора на машине со скриптами. Ну, или хотя бы интерпретатора, запакованного вместе со скриптом в один пакет/исполняемый файл. Это также увеличит размер скрипта с пары килобайт до десятка мегабайт. Не очень удобно для разового использования. Но для локальных скриптов, если на машине и так установлен интерпретатор, ничего дополнительно не потребуется, и их можно будет вызывать хоть двойным кликом.
В свою очередь C# для нормального программирования потребует более-менее адекватную IDE, и хотя в принципе можно обойтись и Блокнотом, без опыта, автодополнения и проверки синтаксиса будет сложновато. К тому же скрипты придётся компилировать для использования, хотя если их не требуется редактировать на месте, то это и не критично. Из плюсов C# (а точнее .NET) для написания скриптов для Windows можно выделить очень широкую поддержку различных компонентов системы Windows. Например, существуют встроенные средства работы с реестром, WMI, сетью. К тому же существует большое количество сторонних библиотек, которые помогут с другими, не настолько низкоуровневыми вещами (может быть вам нужна обёртка над MSI, или простое изменение настроек IE, скорее всего кто-то уже написал класс для работы с ними до вас). Единственное, придётся мириться с иногда несколько неадекватными методами работы с объектами с информацией в .NET, но так уж написан код.
И да, в контраст с Питоном скомпилированные программы на C# весят пару десятков килобайт (это если без внешних зависимостей) и запустятся везде, где стоит .NET Framework определённой версии (да, даже под Линуксом, если в программе нет специфичного для Windows кода). А ещё в C# есть возможность использовать WinForms, что очень облегчает создание графического интерфейса, если он вдруг всё-таки нужен.
Так что выбирайте. Питон — для простых и маленьких скриптов, которым нужен интерпретатор, и в которых доступ к реестру и некоторым другим вещам в Windows несколько сложнее (и, скорее всего, понадобится доустановить модулей), но которые можно править в любой момент и которые гораздо быстрее можно начиркать в Блокноте. Или C# — для более сложных скриптов, или скриптов, в которых просто необходимо обращаться к компонентам Windows, или скриптов, которые должны выполняться на любой машине и весить немного (хотя что-то типа VBS тут может и лучше будет). И уж точно для скриптов, которым требуется показывать окошки, поскольку просто графический интерфейс с помощью WinForms будет написать гораздо проще, чем с Tk или PyQt на Питоне. Хотя для чего-то более сложного я бы всё-таки выбрал Qt. или WPF, если осилите. А уж на чем просто писать код — это уже дело вкуса.
И немного моего мнения.
Вообще, пописав некоторое время и на одном, и на другом (значительно дольше писал на Питоне, но только для себя, на C# писал и другим), у меня сложились несколько субъективные мнения об обоих. О Питоне — в основном положительные, о C# — меньше в целом, но больше отрицательные. Так что не принимайте всё нижесказанное совсем уж всерьёз, ещё больше не принимайте, чем то, что выше написано.
Начав писать на Питоне. сначала скрипты, потом свою первую «большую» программу. я сходу начал писать рабочий код. Иногда я даже не понимал, как он работает, но вот писал и получал рабочий скрипт. Это особенно радовало, так как я использовал эти скрипты для собственных нужд. Изначально я писал небольшой скрейпер, который брал данные с сайта, которые я потом обрабатывал в программе, написанной ещё аж на Лазарусе (как давно это было. ). Языка я толком не знал, но скрипт написался практически вслепую, в nano , благодаря примерам в документации и Гуглу. Потом я вернулся к нему для похожих целей, потом мне приспичило переписать один их скриптов в программу с гуем. Так я начал, всё-таки, учить язык и, параллельно, PyQt. И я был очень приятно удивлён тем, как плавно проходило обучение, и как просто писался новый код, даже когда я не использовал самый оптимальный подход. Потом, постепенно, я уже и сам начал что-то придумывать и реализовывать, мешая Питон с Qt (плохая идея, не делайте так в скриптах), и в конце концов даже научился гуёвому многопотоку и Model/View из Qt. Это очень упростило разработку графических интерфейсов в дальнейшем, так что я полюбил не только Питон, но и Qt. И теперь, когда мне нужно написать небольшую программку для собственного пользования с гуем, или просто скрипт, особенно для работы с вебом (что-то скачать/распарсить/файлы подвинуть), я всегда обращаюсь к Питону, благо на нём это делается довольно просто, и при этом он даёт хороший контроль над ситуацией и не сильно засоряет код скрипта своим синтаксисом.
И всё-таки пару слов о самом языке. Мне очень нравится отсутствие необходимости напоминать каждую вторую строчку компилятору, какого типа та или иная переменная. Ещё, как я выяснил, мне очень нравится, что в списках и словарях могут быть объекты любого типа, и мне не нужно писать для функций для списков со своими классами отдельный контейнер. А если нужно, это делается чрезвычайно просто. Мне нравится очень простой подход к коду, как в языке, так и в сторонних модулях. Мне нравится возможность записи любого кода практически в любом месте программы, особенно когда требуются итерации по контейнерам (в C# для этого есть LINQ). Мне особенно нравится очень простой и читабельный код, без всяких скобок, && и бесконечных явных указаний неймспейсов. И ещё мне нравится большое количество мелких удобных вещей, про которые я сейчас не вспомню, но они есть и я постоянно о них вспоминаю, когда пишу на C#. Например, for..in .
Начав же писать на C#. Когда же я начал писать нормальные программы на нём. кажется, начиная с ASI? Так или иначе, я тут же возненавидел WinForms, поскольку на них невозможно сделать нормальный интерфейс. Сейчас там есть TableLayoutPanel, но даже с ней расстановка элементов по форме бывает просто невыносима. Нет, конечно, накидать пару кнопок и изменить пару свойств можно и на WinForms, но нормальный, структурированный, иерархичный подход к интерфейсу в Qt мне понравился гораздо больше — он легче в написании, гибче, проще в настройке, да и просто дефолтно выглядит лучше. но это не про язык.
Ещё в C# мне не понравилось обязательное использование неймспейсов, и при этом отсутствие возможности эти имена опустить при обращении к классам из них (нет аналога «import as»). Зато в классе использование this является необязательным, что, как мне кажется, только добавляет путаницы (например, можно легко не заметить разницы между полем и каким-нибудь импортированным классом, особенно если IDE не подсказывает). При использовании каких-то сложных классов (типа того словаря с указанными типами) в различных методах, описание такого класса придётся повторять по нескольку раз. Мало того, что это требует постоянного повторения кода, так это ещё и выглядит так. бывает, что сигнатура метода занимает больше байт, чем сам метод. Язык в этом не виноват, но после простого и лаконичного Питона сильно бесит. Ещё почему-то нет встроенного в класс строки метода Format. То есть он есть, но реализован как классовый метод, что делает его использование ужасно неудобным. Сравните:
Брр. Ладно хоть интерполяция строк работает хорошо, но в Питоне 3.6 и это будет. Ещё не нравится, что в C# нет простого способа инициализации списка или словаря с объектами. Т.е. он как бы есть, но всё равно нужно писать для каждого объекта new, и количество скобок и типов зашкаливает, и если нет нормального конструктора, то придётся инициализировать в коде. И вот, взгляните на это:
Это у меня так словарь инициализируется. В Питоне я бы сделал self.available_interfaces = <> и использовал бы свою подсказку с типами. Или вообще бы не использовал. Нет, я понимаю, статическая типизация и всё такое, но уж слишком много приходится расписывать. Например, зачем нужно дублирование типа, если он и так указан? А, точно, там есть var, это я забыл. Только его нельзя использовать в полях, хе. Но var, да и не только он — это ещё один шаг в сторону Питона и подобных. Что ещё раз говорит о правоте моего выбора.
И всё же плюсы в C# есть. Например, большое количество хорошо (ну, будем считать, что хорошо) документированных классов по работе с сетью и прочим, связанным с Windows. Очень полезно при разработке под винду. Да и простота деплоймента, опять же под винду, тоже радует. И всё-таки он компилируется, так что и работает быстрее. Но вот чисто со стороны обучения, написания и чтения кода — я всеми руками за Питон. Вместе с C# на вас обрушивается огромное легаси из синтаксиса, указания типов и классов .NET. В Питоне этого нет, можно просто писать код. Так что вот.
Форум русскоязычного сообщества Ubuntu
Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!
- Форум русскоязычного сообщества Ubuntu »
- Ubuntu Russian LoCo »
- Разработка (Модератор: Azure) »
- C или python
Автор Тема: C или python (Прочитано 12605 раз)
0 Пользователей и 1 Гость просматривают эту тему.
- Форум русскоязычного сообщества Ubuntu »
- Ubuntu Russian LoCo »
- Разработка (Модератор: Azure) »
- C или python
Страница сгенерирована за 0.164 секунд. Запросов: 25.
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.