Comments 48
Сугубо личное мнение, но по-моему, такое можно сказать о любом новом языке/инструменте, который хочет своей аудитории и популярности: «можно отнести ряд таких особенностей, как дружелюбное сообщество, полностью открытый исходный код, приятную IDE и ещё множество приятных мелочей.»…
+2
Согласен с вами. Но вот своей философией и концептуальной целостностью могут похвастаться очень немногие языки. Особенно это заметно, когда в него добавляется новая возможность. Если у языка нет целостности, то он начинает собирать в себе все возможные фичи, превращаясь в итоге в месиво, в котором крайне сложно разобраться.
В Fantom же новые возможности добавляются очень осторожно и от сомнительных расширений предпочитают отказываться. Схожего мнения придерживаются и создатели Clojure, например.
В Fantom же новые возможности добавляются очень осторожно и от сомнительных расширений предпочитают отказываться. Схожего мнения придерживаются и создатели Clojure, например.
0
Предпочитаете писать на Java?
+1
Java, Groovy, Scala (после Scala пока никакой JVM-based язык нет желания и необходимости изучать).
+5
Scala не идеальна. Я во многом солидарен с создателем JodaTime Стивеном Колборном, который высказывается своё мнение о Scala в большой статье Scala feels like EJB 2, and other thoughts.
+1
А как насчет Clojure? Как вы считаете, выигрывает у Fantom'а или нет?
+1
Неожиданно своевременный вопрос :-) Я совсем недавно ушёл из «евангелистов» Фантома и переключился на Кложу. У Фантома при всех его плюсах есть один большой недостаток — его никто не использует. А по Clojure буквально на днях прошёл хакатон, в котором я с огромным удовольствием принял участие. Можно почитать подробнее, если интересно.
0
За то в ней есть pattern matching и не различаются statment и expression.
0
Кстати, Scala поощряет создание иммутабельных структур. Нужна ли возможность проверить иммутабельность произвольного объекта я не уверен.
0
Fantom не такой уж и новый, на самом деле. Если заглянуть в changelog, можно узнать, что первый релиз был аж в сентябре 2005.
Картинка конечно смешная, но подпись к ней подкачала. Да и не новость это, а скорее brief overview, так что ваши мотивы запостить «смешную картинку» на читая топика мне не понятны.
Картинка конечно смешная, но подпись к ней подкачала. Да и не новость это, а скорее brief overview, так что ваши мотивы запостить «смешную картинку» на читая топика мне не понятны.
-2
Как язык интересен. Но вот область применения у него какая? Какой язык из какой ниши он «должен» вытеснить? Есть ли у него необходимый «отвес»?
0
Я думаю у языка большой потенциал. Во-первых, это конечно же серверные приложения. Мне доводилось сравнивать Tales с Play и моё первое впечатление — почему первое настолько быстрее второго? Плюс лично мне концепции Tales кажутся более правильными, тот же «html stays html» в шаблонах. С другой стороны, у этих проектов совершенно разный размер комьюнити, а потому и Play намного более стабилен.
Во-вторых, мне кажется, что Fantom мог бы стать хорошей платформой для разработки графических приложений. Например, кросс-платформеных мобильных приложений. Во-первых, он был создан для того, чтобы работать в разных средах. Во-вторых, декларативный синтаксис и прочие возможности делают его очень удобным для описания интерфейсов. Fantom в чём-то похож на JavaFX Script который не пытается встроить в мой браузер дурацкий java plugin, а транслируется с честный JavaScript.
Во-вторых, мне кажется, что Fantom мог бы стать хорошей платформой для разработки графических приложений. Например, кросс-платформеных мобильных приложений. Во-первых, он был создан для того, чтобы работать в разных средах. Во-вторых, декларативный синтаксис и прочие возможности делают его очень удобным для описания интерфейсов. Fantom в чём-то похож на JavaFX Script который не пытается встроить в мой браузер дурацкий java plugin, а транслируется с честный JavaScript.
0
К слову о серверных приложениях
>Running the code in Production mode
>To run code in production mode use the «exec» command instead of «run». Open command prompt. Cd to the application directory and type
>fan tales exec
>That's it. Your code is running production mode now.
И как же прикрутить к другому серверу, например к jetty? Или что придется весь функционал веб-сервера еще самому реализовывать?
Или например как реализовать сервлет на этом Fantom?
>Running the code in Production mode
>To run code in production mode use the «exec» command instead of «run». Open command prompt. Cd to the application directory and type
>fan tales exec
>That's it. Your code is running production mode now.
И как же прикрутить к другому серверу, например к jetty? Или что придется весь функционал веб-сервера еще самому реализовывать?
Или например как реализовать сервлет на этом Fantom?
0
Насчёт запуска Tales в jetty я, к сожалению, не знаю. Хотя даже если этого ещё нет, я не думаю, что это слишком сложная задача, учитывая возможности Fantom. Кроме того, на сколько я помню в Play 2 с этим всё ещё проблемы.
Fantom может использовать Java, кроме того у него есть встроенный простой веб-движок, который уже давно запускается в любом контейнере сервлетов.
Fantom может использовать Java, кроме того у него есть встроенный простой веб-движок, который уже давно запускается в любом контейнере сервлетов.
0
Сначала были машинные коды. Потом asm. Дальше прикладные языки ( можно считать 1м уровнем абстракции), потом появились вируальные машины (CLR, JVM) и к ним языки 2го уровня асбтракции, сейчас благодаря LLVM — все больше новостей о языках 3го уровня…
Интересно на этому процесс остановится? :)
Интересно на этому процесс остановится? :)
0
>Portability
>Write code portable to the Java VM, .NET CLR, and JavaScript in the browser.
fantom.org/doc/sql/index.html
Что то не видно примера для Javascript или хотя бы для .NET
>Write code portable to the Java VM, .NET CLR, and JavaScript in the browser.
fantom.org/doc/sql/index.html
Что то не видно примера для Javascript или хотя бы для .NET
+2
Ну ведь очевидно, что это не более чем «рекламный слоган». Привязки к VM не будет только если мы используем исключительно native-библиотеки. Которые в свою очередь должны иметь полностью совместимые порты под разные VM. Выглядит утопично.
0
Fantom не предлагает невозможного, он предлагает прозрачный способ написания переносимого кода. Например, стандартная библиотека работает во всех трёх VM. Модуль actors работает только для Java и .NET, поскольку в JavaScript он и не нужен (по крайней мере пока). А допустим fwt (Fantom Widget Toolkit) предоставляет один и тот же интерфейс для доступа к SWT на java и DOM для веба.
Я несколько лет назад занимался разработкой RichText, который отрисовывался на canvas в HTML5 и SWT используя один и тот же код на Fantom. При этом там, где нам нужно было, мы совершенно прозрачно использовали jQuery в JS или скажем JFace в Java.
Я несколько лет назад занимался разработкой RichText, который отрисовывался на canvas в HTML5 и SWT используя один и тот же код на Fantom. При этом там, где нам нужно было, мы совершенно прозрачно использовали jQuery в JS или скажем JFace в Java.
0
В настоящий момент у Fantom ограниченная поддержка дженериков — пользователь не может использовать свои собственные. Однако, три встроенных класса могут List, Map и Func. К примеру, список целых чисел в Fantom объявляется как Int[]. Создатели Fantom считают, что попали в середину: дженерики есть, но без усложнения системы.
Может просто не осилили реализовать, учитывая различия между дженериками Java и CLI (C#)? А там еще и JS заявлен…
+1
Интересно, получается 3 типа (List, Map и Func) по сути имеют статус «встроенных», на подобие массивов в Java. И реализуются они на уровне компилятора/языка, а не на уровне библиотеки?
0
Как только увидел статью про Fantom, первая мысль — уж не в xored ли работает автор? :) Пять минут в гугле — и точно. Интересно, хоть кто-то в России еще работает с этим языком?
+4
А мне понравилось. Пока применения особо не вижу, но для себя, для развития изучить захотелось, чем и займусь на досуге.
0
Я в комментарии выше немного раскрыл эту тему. Может быть вас что-то заинтересует.
0
Java перевешивает все плюшки своей популярностью и простотой. А где искать разработчиков для этого языка? Только обучать.
0
Одно из главных достоинств Fantom — это его простота и схожесть с Java/C#. У меня есть опыт обучения новых людей этому языку и могу вам сказать совершенно точно — гораздо проще найти людей, способных освоить Fantom, чем тех, кто может писать многопоточный код на Java.
0
А можно подробнее, какие средства есть для упрощения создания многопоточных программ.
Ну кроме иммутабелных полей/объектов и акторов (которые есть и в Java).
Ну кроме иммутабелных полей/объектов и акторов (которые есть и в Java).
0
На самом деле в Java нет ни того, ни другого. Иммутабельность в Fantom гарантируется компилятором, и это не аналог final в Java, это настоящая иммутабельность. Например, константный список может содержать только константные элементы. В Java вы не можете такого гарантировать. В Fantom константность можно определить на уровне интерфейса и тогда его смогут реализовывать только константные типы, никаких внутренних состояний. Даже замыкания делятся на константные и не константные в зависимости от того, используют ли они изменяемое окружение.
В Fantom нет примитивов синхронизации вообще. Никаких мониторов, локов, synchronize-блоков и так далее. Новичок не сможет вызвать дедлок случайно поставив «synchronized» в неправильном месте. Все статические переменные обязаны быть иммутабельными. Потоков в явном виде тоже нет, они могут создаваться только для акторов. И вот уже на базе всего этого строятся акторы. Они мало бы чем отличались от потоков, если бы могли одновременно менять один и тот же объект. В Fantom такого не может быть, поскольку у них есть только внутреннее thread-local состояние и константные объекты, которыми они могут обмениваться со внешней средой.
Справедливости ради стоит заметить, что в Fantom поддержка многопоточности не такая крутая, как, например, в Clojure. Нет персистентных структур данных и нет STM. Но это скорее из-за того, что пока не было большой потребности.
В Fantom нет примитивов синхронизации вообще. Никаких мониторов, локов, synchronize-блоков и так далее. Новичок не сможет вызвать дедлок случайно поставив «synchronized» в неправильном месте. Все статические переменные обязаны быть иммутабельными. Потоков в явном виде тоже нет, они могут создаваться только для акторов. И вот уже на базе всего этого строятся акторы. Они мало бы чем отличались от потоков, если бы могли одновременно менять один и тот же объект. В Fantom такого не может быть, поскольку у них есть только внутреннее thread-local состояние и константные объекты, которыми они могут обмениваться со внешней средой.
Справедливости ради стоит заметить, что в Fantom поддержка многопоточности не такая крутая, как, например, в Clojure. Нет персистентных структур данных и нет STM. Но это скорее из-за того, что пока не было большой потребности.
+1
Хорошим примером является пакет java.io, который содержит больше 60 классов и интерфейсов, в Fantom все необходимое лежит в четырех классах: File, Buf, InStream и OutStream.Зато в InputStream в Java 9 методов, а в InStream 35. Тут уж приходится решать — использовать из кучи непонятных классов один, который полностью понимаешь или из нескольких классов тот, в котором полно ненужных тебе вещей. Кроме того, специализированные варианты потоков и файлов наверняка есть в глубинах этого Fantom, просто наружу не торчат.
+2
Главный вопрос: как мне использовать уже имеющиеся JVM-based библиотеки? Я очень ленивый и не хочу писать все с нуля!!!
0
Взаимодейтвие с Java подробно описано в документации.
0
Очередной байт-код. Чтобы потом его перевести в байт-код.
+3
Сразу в глаза бросается первая причина никогда не использовать этот язык — детское название.
Слово, конечно, не детское, но первое впечатление не изменишь
Слово, конечно, не детское, но первое впечатление не изменишь
0
А просто интерпретатор байткода есть? А IO в стандартной библиотеке как на опкоды отображается?
Я давно хочу «взрослый» язык, виртуальная машина которого способна работать в произвольном event loop. Lua и JavaScript/V8 не предлагать.
Я давно хочу «взрослый» язык, виртуальная машина которого способна работать в произвольном event loop. Lua и JavaScript/V8 не предлагать.
0
По второму вопросу — нечто, что можно встроить в сервер с FSM-архитектурой. Типа nginx/lighttpd.
Я это как вижу:
1) виртуальная машина поддерживает множество контекстов выполнения без необходимости создания тредов или процессов;
2) вычисления: виртуальная машина выполняет сколько сказали тиков и возвращает управление;
3) I/O — виртуальная машина дергает переданный снаружи коллбэк, которому говорит, что надо сделать, и какой коллбэк дернуть, когда будет сделано, и тоже возвращает управление.
Я это как вижу:
1) виртуальная машина поддерживает множество контекстов выполнения без необходимости создания тредов или процессов;
2) вычисления: виртуальная машина выполняет сколько сказали тиков и возвращает управление;
3) I/O — виртуальная машина дергает переданный снаружи коллбэк, которому говорит, что надо сделать, и какой коллбэк дернуть, когда будет сделано, и тоже возвращает управление.
0
братьями Фрэнками (Brian Frank, Andy Frank).
Brian Frank я прочитал как Brainfuck…
0
Желаю конечно удачи проекту, но не приведет ли это к тому, что мы опять будем бодаться с кросскомиляцией? И зачем спрашивается вобще нужно было в виртуальные машины тогда съезжать?
0
Спасибо за пост. Я с fan познакомился недавно, но опечалило одно — IDE для него. Что то умней Клипсы мне нужно.
Был плагин fan4idea, но он старый. Его можно конечно поднять к IDEA 13, но ограничения — только Java + JS, меня это огорчает.
Был плагин fan4idea, но он старый. Его можно конечно поднять к IDEA 13, но ограничения — только Java + JS, меня это огорчает.
0
Sign up to leave a comment.
Почему Fantom?