Jump to content

Recommended Posts

2 hours ago, Graf said:

Если языки очень близки, и всё, что можно написать на одном, легко перевести на другой в более-менее идиоматическом виде, то можно, например, IntelliJ позволяет Java в Kotlin перевести без проблем.

Kotlin и Scala относительно Java - это вообще синтаксический сахар, потому там задача конвертации относительно просто формализуема. В общем же случае, это очень сложно формализовать.

Link to post
Share on other sites
2 hours ago, Медовый Джек said:

интересный вопрос. мне кажется, что нормально  (в смысле, что в итоге не получится какой-то дикий говнокод, пусть даже и работающий) "перевести" невозможно в принципе. по крайней мере мало-мальски сложную программу. но я конечно не специалист. 

Высока вероятность с такими транспиляторами, что получится нечитаемый кусок кода, который потом заебешься поддерживать. Хотя есть и хорошие примеры - конвертер джавы в котлин, встроенный в Intellij работает довольно хорошо. Но в любом случае нужно не забывать еще и тот факт, что есть в мире не только C-подобные языки, и в тех же функциональных языках, например, нужно не просто цикл по-другому объявлять, а вообще весь проект строить иным способом, нежели в ООП, например.

49 minutes ago, Токсичный Арабанщик said:

ну в английский очень много слов из французского было привнесено

В русский то побольше

Link to post
Share on other sites
12 minutes ago, Игривый Пекан said:

конвертер джавы в котлин, встроенный в Intellij работает довольно хорошо.

опять же, не особо знаток, но вроде жаба от котлина не так-то сильно и отличается?

Link to post
Share on other sites
38 minutes ago, Медовый Джек said:

опять же, не особо знаток, но вроде жаба от котлина не так-то сильно и отличается?

Ну как Swift от Objective C мне кажется

Link to post
Share on other sites
5 hours ago, Talk Sick said:

Kotlin и Scala относительно Java - это вообще синтаксический сахар

Я не согласен. Котлин может и сахар (очень приятный сахар), а вот Scala принципиально отличается например дженериками высшего порядка, которые к джаве хрен приведешь, поэтому совместимость у джавы и скалы не полностью в обе стороны работает. 

16 hours ago, MC EBALO said:

Вопрос, а разве сейчас не сделали конверторы из разных языков программирования в другие? Не получается знать один язык и переводить в другие посредством какого-нибудь компилятора? Или это в принципе не особо возможно?

 

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

Универсальных трансляторов нет, специализированные из языка A в язык B вполне применяются на практике, хоть и ограниченно. 

Edited by Королевский нумеролог
Link to post
Share on other sites
5 hours ago, Медовый Джек said:

опять же, не особо знаток, но вроде жаба от котлина не так-то сильно и отличается?

ну, смотря что ты подразумеваешь под отличиями. Оба C-подобные, оба исполняются в JVM со всеми вытекающими последствиями в виде сборки мусора и т.п.. Можно использовать API друг от друга соответственно, хоть и частенько весьма неудобно.

 

Но в Котлине есть очень много вещей, которые в джаве сымитировать можно, но очень некрасиво. Там есть pattern matching, там есть корутины, observable переменные, null safety. Мне кажется, если все это считать синтаксическим сахаром, то вообще любой условный C-подобный язык N - синтаксический сахар для C и для всех, существовавших между C и N

Link to post
Share on other sites
7 hours ago, Королевский нумеролог said:

Я не согласен. Котлин может и сахар (очень приятный сахар), а вот Scala принципиально отличается например дженериками высшего порядка, которые к джаве хрен приведешь, поэтому совместимость у джавы и скалы не полностью в обе стороны работает.

Готов согласиться (у JVM даже есть фичи, которые предназначены специально самой java не используются), но тем не менее, практический "апгрейд" кода будет от джавы к скале, а не наоборот.

Link to post
Share on other sites
7 hours ago, Talk Sick said:

Готов согласиться (у JVM даже есть фичи, которые предназначены специально самой java не используются)

Это какие?

 

Если ты про invokedynamic, то его восьмая джава начала активно юзать. Но до восьмой действительно он был там для поддержки других языков.

Link to post
Share on other sites
8 hours ago, Игривый Пекан said:

Это какие?

Если ты про invokedynamic, то его восьмая джава начала активно юзать. Но до восьмой действительно он был там для поддержки других языков.

Я знаю, там как-то косвенно с их помощью как-то лямбда-выражения вызываются.

Под фичами я имел в виду то, что можно делать в других языках, но нельзя в самой java. Конечно, правильнее было бы сказать, что сам java-компилятор сужает возможности языка, в то время, как другие компиляторы могут этого не делать. В люом случае, там это тоже в пределах синтаксического сахара бывает, типа того например, что в scala можно вызывать исключения, не объявляя, что метод их выкидывает.

Link to post
Share on other sites
1 hour ago, Talk Sick said:

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

Ну это не фича JVM, это именно что фичей компилятора джавы является то, что он за необъявление или непроброс по рукам бьет. На уровне JVM это реализовывать было бы в любом случае странно. типа запустить код на продакшене и при стартапе получить дулю, потому что не добавил исключение в объявление метода? :вако: 

Link to post
Share on other sites
17 hours ago, Talk Sick said:

Готов согласиться (у JVM даже есть фичи, которые предназначены специально самой java не используются), но тем не менее, практический "апгрейд" кода будет от джавы к скале, а не наоборот.

Ну если "апгрейд" называть сахаром, тогда да. Хотя для меня синтаксический сахар - это когда просто можно записать злоебучую конструкцию более простым образом. Например в той же scala есть call-by-name параметры, которые под капотом раскрываются в функцию без параметров. С их помощью можно писать ленивые вычисления не приходя в сознание называется. Как на хаскелле. 

Link to post
Share on other sites
1 hour ago, Игривый Пекан said:

Ну это не фича JVM, это именно что фичей компилятора джавы является то, что он за необъявление или непроброс по рукам бьет. На уровне JVM это реализовывать было бы в любом случае странно. типа запустить код на продакшене и при стартапе получить дулю, потому что не добавил исключение в объявление метода? :вако: 

Это было бы рантайм исключение о том, что метод кинул исключение, не объявив себя как кидающего исключение. Охуенно было бы! 

Link to post
Share on other sites
1 hour ago, Королевский нумеролог said:

Ну если "апгрейд" называть сахаром, тогда да. Хотя для меня синтаксический сахар - это когда просто можно записать злоебучую конструкцию более простым образом. Например в той же scala есть call-by-name параметры, которые под капотом раскрываются в функцию без параметров. С их помощью можно писать ленивые вычисления не приходя в сознание называется. Как на хаскелле. 

В основном, эти два расширения java так и используют, я понимаю,что там могут быть изменены некоторые принципы, скала может и в функциональное, ок.

Вот, groovy - он уже действительно другой язык изначально.

 

10 minutes ago, Королевский нумеролог said:

Это было бы рантайм исключение о том, что метод кинул исключение, не объявив себя как кидающего исключение. Охуенно было бы! 

Не будет. :вако: В JVM такого требования нет, за этим следит компилятор.

1 hour ago, Игривый Пекан said:

Ну это не фича JVM, это именно что фичей компилятора джавы является то, что он за необъявление или непроброс по рукам бьет. На уровне JVM это реализовывать было бы в любом случае странно. типа запустить код на продакшене и при стартапе получить дулю, потому что не добавил исключение в объявление метода? :вако: 

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

Link to post
Share on other sites
41 minutes ago, Talk Sick said:

В основном, эти два расширения java так и используют, я понимаю,что там могут быть изменены некоторые принципы, скала может и в функциональное, ок.

Вот, groovy - он уже действительно другой язык изначально.

Scala и Kotlin тоже другие языки, а не расширение джавы :лук: 

Link to post
Share on other sites
On 2/24/2021 at 9:19 PM, Королевский нумеролог said:

Более чем актуальная на замену джаве везде и всюду без шуток сказано. Все джавовые фреймворки и библиотеки отлично работают с котлином (тот же спринг например), код получается более компактным, можно упарываться в функциональщину. Судя по моим коллегам, джаваны на него массово с джавы переходят.

Еще котлин неплохо подходит для DSL-строения, те же JetBrains на нем сделали DSL для описания билдов тимсити.

Там какая-то своя виртуальная машина или он сам на джаве работает?

ЗЫЖ Ааа. Почитал. На джаве. Такштаа, это не "замена", а еще один фреймворк между рулем и сиденьем.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...