try,
SELECT round(AVG(rating) * 2.0) / 2.0 AS result
FROM rating
WHERE ....
Я не очень хорошо знаю Ruby, но могу предположить следующие моменты:
ИМХО, то, что один человек считает преимуществом, может быть недостатком для другого. Некоторые люди предпочитают статическую типизацию, а другие - динамическую. Это довольно субъективно и во многом зависит от работы и человека, выполняющего ее.
Я бы сказал, просто выучите Java и решите сами, в чем ее сильные стороны. Само знание обоих языков превосходит любые сравнения / советы, которые может дать другой человек. И обычно хорошо знать другой язык, чтобы не тратить зря время.
Если вам нужно создать большое программное обеспечение, вам нужно сотрудничать. Имея много программистов, вы уверены, что найдется кого-то, кого можно попросить поддерживать ваше программное обеспечение, даже если первоначальные разработчики ушли из компании.
Статическая проверка типов и хорошая Java IDE не предлагают никакого волшебства, и это хорошо для многих сопровождающих вместо Ruby.
Недостаточно указать, что java типизируется статически, а ruby - динамически.
Поправьте меня, если я ошибаюсь, но покрывает ли это тот факт, что в рубине вы можете добавлять и даже изменить программу (определения классов, определения методов и т. д.) во время выполнения? AFAIK у вас могут быть языки с динамической типизацией, которые не являются «динамическими» (могут быть изменены во время выполнения).
Потому что в Ruby вы можете изменить программу во время выполнения, о котором вы не знаете, пока вы не на самом деле ] программа, как она будет себя вести, и даже тогда вы не знаете, будет ли она вести себя так же в следующий раз, потому что ваш код мог быть изменен каким-то другим кодом, который вызывал код, который вы пишете и тестируете.
Эта предсказуемость, в зависимости от контекста, является преимуществом Java - один из контекстов, в котором это преимущество - это когда у вас есть много разработчиков с разным уровнем квалификации, работающих над довольно большим корпоративным приложением.
Язык.
Я считаю, что особые свойства самого языка Java приводят нас к мощным возможностям IDE и инструментов. Эти возможности особенно ценны, когда вам приходится иметь дело с очень большой базой кода.
Если я попытаюсь перечислить эти свойства, это будет:
То, что у нас есть в среде IDE до сих пор, например Eclipse:
Существует МНОГО инструментов для Java. В качестве примера одного замечательного инструмента я хочу упомянуть Maven. Собственно, я считаю, что повторное использование кода действительно возможно только при наличии такого инструмента, как Maven. Созданная вокруг него инфраструктура и интеграция с IDE делают возможными очень интересные проекты. Пример: у меня установлен плагин m2eclipse. У меня новый пустой проект в Eclipse. Я знаю, что есть класс, который мне нужно использовать (на самом деле повторно) где-то в репозиториях, например, StringUtils. Я пишу в своем коде StringUtils, редактор Eclipse сообщает мне, что такого класса в проекте нет, и подчеркивает его красным. Я нажимаю Ctrl + 1 и вижу, что есть возможность искать этот класс в публичном репозитории (фактически в индексе, а не в самом репозитории). Были найдены некоторые библиотеки, Я выбираю одну из них в определенной версии, и инструмент загружает jar-файл, настраивает calsspath моего проекта, и я уже получил все, что мне нужно.
Так что все дело в производительности программиста.
JVM.
Мое мнение таково. что JVM (в частности, Sun's HotSpot) является одним из самых интересных программных продуктов в настоящее время. Конечно, ключевым моментом здесь является перформанс. Но текущая реализация HotSpot JVM исследует самые современные способы достижения такой действительно высокой производительности. Он исследует все возможные преимущества своевременной компиляции над статической, собирает статистику использования кода перед JIT-компиляцией, оптимизирует, когда это возможно, виртуальные вызовы, может встраивать гораздо больше вещей, чем статический компилятор, и так далее. И самое замечательное в том, что все это находится в JVM, но не в самом языке (как, например, в C #). На самом деле, если вы только изучаете язык Java, я настоятельно рекомендую вам изучить детали современных реализаций JVM, чтобы вы знали, что действительно снижает производительность, а что нет, и не добавляйте ненужные оптимизации в код Java. , и не боитесь использовать все возможности языка.
Итак ... на самом деле все дело в IDE и инструментах, но по какой-то причине у нас есть их для Java, а не для любого другого языка или платформы (.NET, конечно, является большим конкурентом в мире Windows).
Мне нравится это сравнение (найдено по ссылке, предоставленной Маркусом! Спасибо!) ... Спасибо всем ... я также ожидаю еще нескольких дискретных преимуществ
И это здорово !!
Виртуальная машина Java , в которую было внесено более десяти лет улучшений, включая:
Причина №1. Существует много устаревшего кода Java. Ruby - новинка, не так много программистов, которые его знают, и еще меньше тех, кто в нем хорош. Точно так же для Java доступно гораздо больше библиотечного кода, чем для Ruby.
Таким образом, могут быть технические причины, по которым Ruby лучше, чем Java, но если вы спрашиваете по причинам бизнеса, Java все равно лучше.
Расскажите, пожалуйста, об абсолютных… преимуществах Java перед Ruby
Программистам редко приходится иметь дело с абсолютными понятиями.
Я осмелюсь и скажу, что , как правило , статическая типизация (Java) является преимуществом по сравнению с динамической типизацией (Ruby), потому что она помогает распознавать ошибки намного быстрее и без необходимости потенциально сложных модульные тесты 1) .
При разумном использовании сильная система типов со статической проверкой типов может реально сэкономить время.
1) Я делаю не выступать против модульного тестирования! Но хорошее модульное тестирование сложно, и компилятор может быть большим подспорьем в сокращении огромного количества необходимых тестовых примеров.
Многие из этих преимуществ являются результатом того, что экосистема Java стала более зрелой, чем экосистема вокруг Ruby. Многие из этих моментов субъективны, например статическая или динамическая типизация.
Прочитав это: Является ли Ruby таким же кроссплатформенным, как Java? заставил меня осознать по крайней мере одно фактическое преимущество java перед ruby:
J2ME-совместимый subest of java более портативен, чем ruby
, пока JRuby не будет работать на J2ME, что может быть навсегда
Есть больше вариантов:
Обратите внимание, что это не имеет ничего общего с ЯЗЫКАМИ как таковыми :)
Негативы для Java:
Положительные стороны для Java: