- Выбор набора инструментов: scala, ruby, java и другие
- 7 ответов
- Scala
- Groovy
- JRuby / Jython
- Clojure
- Saved searches
- Use saved searches to filter your results more quickly
- License
- dhinojosa/language-matrix
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
Выбор набора инструментов: scala, ruby, java и другие
Я являюсь частью группы, которая начинает новый проект разработки с нуля. В настоящее время это хобби, но мы стремимся сделать его нашей жизнью в течение 1-2 лет. Мы являемся старшими разработчиками, работающими на множестве языков и технологий, и в течение последних нескольких лет уделяем большое внимание Java.
Сейчас мы думаем о выборе наборов инструментов и языков (будущее будет светлым, если начинать с нуля). Мы хотим иметь возможность эффективно использовать современные архитектуры и иметь хороший опыт работы с Java и другими технологиями, основанными на JRE.
Короче говоря, проект состоит из множества операций ввода-вывода, баз данных и достойного пользовательского интерфейса, который, вероятно, должен быть веб-ориентированным и достаточно эффективным.
Один из возможных путей — это классическая Java и создание пользовательского интерфейса с использованием GWT (или слоев поверх GWT), другой — Scala + lift.
Тогда есть другие методы, основанные на Ruby, Groovy и так далее.
Тогда мой вопрос: что бы вы выбрали в качестве инструментов для нового долгосрочного проекта, учитывая вышеизложенное. Скала здесь, например, чтобы остаться, или это один из тех, кто имеет только временную рекламу?
Какие еще методы вы рассматриваете для крупных проектов с нуля?
7 ответов
Возможно, ваш самый большой выбор в двоичном коде — вы решите остаться на виртуальной машине Java (JVM) через Java или один из других языков, которые компилируются в байт-код, или перейти на другую платформу, возможно, Ruby или Python (со сложностями, связанными с работа с различными архитектурами / операционными системами, которые это может повлечь). Лично я решил, что очень хочу придерживаться JVM, и поэтому ваш выбор языка будет.
Scala
Все, что я могу дать, — это мой собственный опыт, полученный из опыта Java: переход на scala стал проще благодаря его естественной интеграции в экосистему Java и способности продолжать использовать практически тот же набор инструментов таким же образом.
Под этим последним пунктом я подразумеваю, что статически типизированный характер scala означает, что все возможности рефакторинга и навигации по коду по-прежнему доступны для разработчика, но вывод типа scala означает, что это происходит без ненужной детализации объявлений типов, замусорившихся в вашем коде.
Я по-прежнему могу использовать мои любимые вещи, такие как Spring, ant, IDEA, и я все еще могу использовать все библиотеки, которые я когда-либо писал на Java (это аргумент для выбора языка, который интегрируется с Java, вместо совершенно нового, такого как Ruby, Smalltalk или питон).
С точки зрения того, что Scala здесь, чтобы остаться языком JVM, это то, что меня больше всего беспокоило. Но подумайте, сколько вопросов по SO было помечено Jython (161), JRuby (176), clojure (388) и Groovy (661), предполагая, что вы хотите остаться в JVM. Scala теперь не только значительно опережает их (815), но и растет довольно быстрыми темпами.
Наконец, хотя я не использовал Lift, коллега был чрезвычайно впечатлен этим (и я, вероятно, посмотрел бы на него, если бы писал веб-приложение). Я обнаружил, что альтернатива толстому клиенту (качели скалы) более чем полезна (во всяком случае, лучше, чем сырые качели!).
Groovy
Стоит отметить, что создатель Groovy недавно сказал, что если бы он знал о существовании Scala, он бы никогда не стал создавать Groovy!
JRuby / Jython
Я смешал эти два языка вместе, потому что они оба представляют собой попытку перенести синтаксис динамического языка на JVM. Если этот синтаксис вам уже не знаком, зачем вам идти по этому пути? Я должен сказать, что статистика SO (выше) не указывает на то, что она имеет импульс в данный момент.
Я также полагаю, что переход от статически скомпилированного к динамическому языку — это большой шаг, и вы можете быть удивлены тем, что упустили (с точки зрения рефакторинга, помощников по разработке и т. Д.) — вас также может беспокоить тот факт, что интерпретируемый Природа этих языков делает их на порядок медленнее, чем Scala.
Clojure
У меня нет реальных мнений о clojure, кроме как сказать, что с императивным фоном, его синтаксис страшен и его поток крайне незнаком. Меня больше впечатляет функциональная парадигма, но я чувствовал, что замыкание было для меня слишком далеко; Я был бы рыбой без воды на этом языке, не имея предыдущего опыта в LISP / Scheme.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Code snippets to do useful things for 11 languages: C, C++, Groovy, Ruby, Java, Scala, Python, Haskell, Javascript, Lisp, Clojure, Rust
License
dhinojosa/language-matrix
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
It is a project that contains (or should contain) the same samples per computer language topic across multiple languages. For example, if you look up a methods in Java, you should find the same examples in Groovy, LISP, C, C++, etc. Any derivation from the primary examples will be presented with more clarity and explanation
It will not cover the multitude of libraries across different languages. This just focuses on the languages themselves and the capabilities they serve.
How many languages are there?
Right now aiming for 10. This is a work in progress.
How do I look up material?
Each language has a README.md, click on the language and view the topics. Some topics will take you to the code directly, some will cross reference you to a topic. Say as a Java programmer you know what a List is, but when you look up Ruby and there are no lists, the Ruby README will cross reference you to arrays, which is how they create list like collections.
Do you accept pull requests?
Absolutely. Be warned, I am aiming for a certain aesthetic and layout, so it may not happen right away.
Topic | Java | JavaScript | Haskell | Clojure |
Generics | `java/generics` | N/A | `haskell/parameterized_types` | N/A |
Generics | `java/generics` | N/A | `haskell/parameterized_types` | N/A |
About
Code snippets to do useful things for 11 languages: C, C++, Groovy, Ruby, Java, Scala, Python, Haskell, Javascript, Lisp, Clojure, Rust