Рекомендации Google App Engine - Go vs. Python?

Я изучаю свое первое приложение Google App Engine. С# - это мой "родной" язык, поэтому запись приложения на Java, конечно, будет наиболее логичной. НО, я выродка и хотел бы воспользоваться возможностью узнать что-то новое.

Таким образом, его подбрасывание между Python и Go.

  • У вас есть сильное предпочтение, основанное на опыте (в идеале в контексте написания на App Engine).
  • Если вы пришли из С# (или другого подобного языка), как прошел переход?

Ответ 1

Недавно выпущенная Go runtime для App Engine помечена экспериментально по какой-то причине: и Go, и Go-on-appengine являются новыми и находятся в состоянии изменения.

Если вы хотите поэкспериментировать с Go и запуском Go apps в облаке, пойдите для этого. Если вы хотите написать производственное приложение в App Engine, используйте Python или Java.

Ответ 2

Этот вопрос примерно такой же субъективный, как и они, но я все равно укушу.

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

Тем не менее, Go - очень продуманный язык. Далеко, намного больше, чем Python. Go был специально разработан, чтобы вы могли поймать большинство ошибок во время компиляции, в то время как Python почти легендарен своей способностью маскировать ваши ошибки. Коды, как правило, легче поддерживать. Go также значительно эффективнее Python - в несколько раз быстрее или даже на несколько порядков быстрее, в зависимости от того, что вы делаете.

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

Ответ 3

Недавно я применил приложение Python для GAE и пришел с С#. У меня не было проблем/он смог забрать его за несколько дней, играя с документами и играя с SDK (у меня был некоторый предыдущий опыт работы с python). < ш > Python довольно интуитивно понятен, его императив и OO могут потребовать небольшого изменения мышления с С#, но ничего революционного - использование интерактивного интерпретатора позволит вам забрать его за день IMO. Изучение того, как использовать хранилище данных и выяснение других специфичных для GAE API (blobstore, image, mail), вероятно, будет больше работать (это специфично как транзакции/группы, режимы согласованности...), но вы можете понять, что это происходит, когда вы идете/когда вам это нужно в вашем приложении.

Одна вещь, которую нужно отметить - недавно объявленная схема ценообразования делает Python плохим выбором в банкомате GAE, поскольку он не может обрабатывать запросы в настоящее время, и это приводит к одному "экземпляру" для каждого запроса. Это справедливо и для Go ATM (насколько я знаю). JVM OTOH может обрабатывать ~ 20 одновременных запросов на один экземпляр, если я правильно помню списки рассылки. И вы будете платить за экземпляр/час. Это делает JVM наиболее практичным выбором, если вы планируете опубликовать свое приложение в ближайшем будущем.

Кроме того, с помощью JVM вы можете использовать Scala (новый/классный язык) и фреймворк вроде Lift, который теоретически позволит вам перенести ваш код/​​избежать блокировки (отказ от ответственности: я говорю теоретически, потому что я только начинаю с Scala и не имеют практического опыта работы с лифтом).

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

Ответ 4

Лично я бы предпочитал Python, потому что намного, гораздо более зрелый, чем Go.

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

Предупреждение. Я склонен рекомендовать Python, потому что мне это нравится, но вы также должны быть осторожны, потому что я слышал, что многие жалуются на то, сколько поддержки Google на Python-App-Engine. Люди просят годы обновить поддержку Python, и никто их не слышит.

Говоря это, вероятно, Java был бы более разумным выбором, особенно потому, что вы привыкли к C#.

Ответ 5

Go по-прежнему экспериментальный на GAE - возможно, это не лучшая платформа для изучения нового языка. Python определенно является хорошим выбором.

Учитывая новый язык, не забывайте, что, выбирая Java, вы получаете JVM, который позволяет не только Java-код, но и другие языки, такие как: Scala, Grails, Clojure, JRuby любое множество других.

Ответ 6

Python так долго поддерживается в GAE - много тестируемой информации, инфраструктуры и т.д. Go является новым для GAE.

Я бы определил больше на уровне языка. Исходя из С#, выбирая Python, вы идете немного более "высокоуровневым", тогда как выбор Go переходит в более "низкое" направление. Более низкий уровень контроля, но и больше беспокойства по этому поводу. Выберите Python, если вы заинтересованы в разработке приложений и пойдите, если это больше касается разработки систем. Одним из важных моментов для меня было бы то, что Go имеет встроенный актерский стиль concurrency, хотя я не знаю, насколько хорошо это поддерживается в GAE.