По состоянию на 2020.02.02 г.
Python 2 и 3 не решает проблему глобальных блокировок интерпретатора.
В качестве альтернативы
Используйте Go lang для разработки веб-сайтов, интрасетей, приложений LINE и т. Д.
Для разработки ИИ и машинного обучения будет использоваться Python, а для Go lang решением будет использование веб-сайта + AI (библиотека API для Go lang) + AI (машинное обучение) DATA.
Связанная информация:
Python 2 и 3 не решает проблему глобальных блокировок интерпретатора.
В качестве альтернативы
Используйте Go lang для разработки веб-сайтов, интрасетей, приложений LINE и т. Д.
Для разработки ИИ и машинного обучения будет использоваться Python, а для Go lang решением будет использование веб-сайта + AI (библиотека API для Go lang) + AI (машинное обучение) DATA.
Связанная информация:
Прощай питон, привет иди
Цитата:
Сводка достоинств или недостатков Go по сравнению с Python от автора, который недавно написал на Go для задач, которые ранее были написаны на Python.
- [ Питон ]
- [ Go (Голанг) ]
- Прощай, Питон. Привет, иди. (На английском)
- mtsk
- doublemarket
- Отредактировано 502 дня назад с комментарием к исходному тексту
Для того,
Я использую язык Go для большой обработки, которую раньше писал на Python. Например, возможна следующая обработка.
- Обработка журналов Cloudfront, хранящихся в Amazon S3
- Процесс перемещения огромных файлов (класс терабайт) в S3 и из него
- Сопоставление синхронизированных файлов между базой данных и S3
Это почти всегда одноразовый процесс, поэтому идеально писать его на языке сценариев. Программа должна быть написана быстро и, вероятно, скоро будет удалена. Поскольку эти задачи всегда новые и уникальные, код, который вы можете использовать повторно, минимален.
Вот преимущества использования Go вместо Python.
Хорошо иметь компилятор
Я регулярно делаю скучные ошибки в Python. Ошибки в имени переменной / имени функции или передаче неверного аргумента. Инструменты разработки могут их найти, но эти инструменты часто требуют специальной инициализации. Я до сих пор не смог легко настроить pylint, и мне не нравятся полноценные интегрированные среды разработки, которые в этом нуждаются.
В худшем случае переменные опечатки скрыты за условными ветвями. Сценарий вызывает ошибку после запуска в течение нескольких часов. И после того, как все испортилось, вам нужно перезапустить.
Модульное тестирование может обнаружить многие из этих проблем. Однако охват 100% затруднен, и я не хочу тратить время на модульные тесты для одноразовых скриптов.
Скомпилированные языки решают все эти проблемы. Компилятор поймает эти ошибки. По этой причине мне нравится язык Go для обработки более нескольких сотен строк данных.
Скорость разработки
Недостатком языка компилятора является низкая скорость разработки. Это особенно верно для C / C ++ и Java.
Go достаточно прост, если вы знаете, что скорость разработки сведена к минимуму. Я все еще ускоряю Python, но производительность языка go составляет около 85% по сравнению с написанием на python.
85% это не плохо. Это потому, что использование компилятора значительно уменьшает незначительные ошибки.
Преимущество в параллельной обработке
Как известно, Go изначально был создан для параллельной обработки.
Нашей команде часто нужны программы параллельной обработки для обработки больших объемов данных в S3 и базах данных.
Если задача требует интенсивного ввода-вывода, потоки Python могут помочь. Однако для задач, интенсивно использующих процессор, Python сложен с точки зрения глобальных блокировок интерпретатора.
Мне нравится простой способ, которым многопоточный Go работает без особых усилий. Были ли у вас проблемы с использованием Ctrl-C с многопоточным Python?
Простое развертывание
Мне нравится работать с отдельными двоичными файлами. Я часто запускаю код на EC2. Это должно сделать путь связи между сценарием и базой данных S3 / ближе. Если вы делаете это в Python, вам необходимо убедиться, что все необходимые пакеты установлены на удаленной машине и не конфликтуют с чем-либо, установленным другими коллегами.
Virtualenv
решает большую часть этой проблемы, но язык Go проще.
В большинстве случаев вам просто нужно кросс-компилировать код Go вашего Mac для Linux, скопировать его на удаленный компьютер и запустить. Все зависимости содержатся в двоичном файле.
Последовательный стиль (форматирование)
Сначала я разочаровался в инструменте
gofmt
. В частности, трудно использовать отступы табуляции вместо пробелов. Я думал, что это не нормально.
Однако, используя его, он стал зависеть от
gofmt
. Будучи автоматически отформатированным без какого-либо рассмотрения, вы освобождаетесь от форматирования. Весь мой код всегда в едином стиле, независимо от того, над каким проектом я работаю. Форматирование является функцией стандартных языковых инструментов Go.
В Python подобный эффект (согласованный формат) более дорогой. Я должен правильно настроить
pylint
и убедиться, что он одинаков pylint
всех проектах.Преимущество в инструментах
Одним из примеров этого является просто
gofmt
. Все хорошие расширения Go доступны в любом редакторе, который я использую (VSCode, vim, Sublime Text). Это преимущество языка Go, предоставляющего инструменты как стандартную функцию.
Результатом является Java-подобный intellisense без использования IDE. В Python я никогда раньше не подходил к этой функции.
Недостающая часть
Всякий раз, когда я вижу критику языка Go, это происходит из-за отсутствия функций (таких как Generics) в Go. Я никогда не сталкивался с серьезными проблемами из-за отсутствия генериков. (Вы будете удивлены, увидев, сколько вы можете сделать с картами и срезами.) Но я столкнулся со многими другими проблемами.
Иди язык слишком напорист
Язык Go - это язык, на который я претендую, даже среди языков, которые я написал.
gofmt
с принудительного использования вкладок вместо пробелов (при условии, что вы используете gofmt
), с использованием определенной структуры каталогов и построения кода в переменной среды GOPATH. Многие из этих возможностей языка Go не так легко изменить.
Одна из причин низкой стоимости обучения Go состоит в том, что эти функции нельзя изменить. Если вы не хотите делать имена, начинающиеся с заглавных букв (функций, переменных и т. Д.), Общедоступными, то это не очень хорошо. К счастью, это не беспокоит меня, но я понял все остальное.
Python гораздо более гибкий.
Несколько вещей, предоставляемых библиотекой
Несправедливо сравнивать Python и Go в этом отношении. Иди намного новее. Но когда я нахожу функцию, которую Go не поддерживает, я растерялся. Вы будете еще более сбиты с толку, когда код, который должен быть встроенной функцией, размещен в StackOverflow, и каждый ведет себя как копирование и вставка этого кода в ваш проект.
Два примера (те, которые приходят на ум в последние годы):
- Сортировка ломтиков (к счастью, начиная с Go1.8)
- Math.round может обрабатывать только целые числа, а не переменные с
float
(например, если вы хотите округлить до .5). А до Go1.10 не было даже Math.round.
Да, некоторые из них связаны с отсутствием обобщений в Go, а также потому, что разработчики Go следуют стратегии добавления только того, что абсолютно необходимо в стандартную библиотеку.
Я понимаю два момента выше. Однако, если вы сталкиваетесь с небольшой функцией, которую вам нужно реализовать самостоятельно, это раздражает.
Я надеюсь, что эти неприятности уменьшатся по мере развития языка Го.
Yubinbango197-0828
5-3-11 Akidome, Akiruno-shi, Токио
5-3-11 Акиру Акируно-Сити Токио Япония
скоро генеральный директор
Масахиро Ишизука
(МАСАРИО ИШИЗУКА)
ТЕЛ: 042-559-8638
iPhone: 070-3861-5011
БЕСПЛАТНЫЙ ТЕЛЕФОН
+81 50 5532 0868
Skypeжить: cloud9slack
http://aon.tokyo
http://aon.co.jp В стадии подготовки
cloud9slack@gmail.com
0 件のコメント:
コメントを投稿