LINUX.ORG.RU

Kojo — среда для обучения языку Scala

 , kojo, , ,


0

0

Не так давно была анонсирована Kojo — среда для обучения языку Scala на платформе NetBeans. Kojo включает в себя много интересных возможностей, таких как, например, Scala REPL, и позиционируется как развлекательно-обучающая среда для детей. Автор Kojo, Lalit Pant, отвечает на вопросы сайта netbeans.org:

NetBeans: Lalit, здравствуйте. Расскажите, кто Вы и чем занимаетесь?

Lalit: Я — учитель математики в школе для девочек из малообеспеченных семей, в маленьком городке Dehradun в Северной Индии. Ранее я был профессиональным разработчиком и работал в США. В течение 16 лет карьеры мне довелось писать на самых разных языках — С, С++, Java, Prolog, Ruby, Python и, наконец, Scala. Последние 10 лет моей жизни так или иначе были связаны с Java.

NetBeans: Ну, и что же такое Kojo? С какими продуктами можно ее сравнить?

Lalit: Kojo является тем, что я называю обучающей средой. При помощи Kojo ребенок может играючи обучаться работе с компьютером, овладевать азами программирования, экспериментировать с математикой и визуальными образами. Из похожих продуктов я отмечу Scratch, Processing и The Geometer's Sketchpad.

NetBeans: Чем же Kojo уникальна?

Lalit: Kojo сочетает в себе:

  • мощный язык;
  • компьютерное искусство;
  • анимацию и визуализацию;
  • интерактивную математику.

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

NetBeans: Почему Kojo написана именно на Scala?

Lalit: Должен признать, что знакомство со Scala способно сильно расширить кругозор даже самого опытного разработчика в объектно-ориентированной парадигме. Я столкнулся с такими новыми (и очень мощными) концепциями как Traits, Implicits, Abstract Types, полиморфизм type constructor'ов. Scala также явилась для меня примером практического применения функционального программирования, позволяя использовать функциональный подход внутри объектно-ориентированного кода. Поэтому, когда я стал задумываться об обучающей среде для детей, я не колебался в выборе Scala.

NetBeans: И в качестве пользовательского языка тоже?

Lalit: Да. Я решил, что буду обучать детей программировать именно на Scala, потому что даже узкое подмножество Scala (гораздо более простое, чем Java; по простоте приближающееся к Python или Ruby) обладает порядочной мощью. Да и Scala REPL пригодится мне для собственных разработок ;)

NetBeans: Каковы, по-Вашему, преимущества платформы NetBeans?

Lalit: Что мы имеем «из коробки»:

  • редактор исходных текстов: великолепная инфраструктура для создания редакторов, предоставляющая подсветку синтаксиса, автодополнение, автоформатирование и т.п.;
  • оконная система: фиксация (docking) / передвижение окон внутри рабочего пространства;
  • профессиональный внешний вид;
  • окно вывода с автоматическим переносом строк, «умным» скроллингом, настраиваемым шрифтом и гиперлинкингом для сообщений об ошибках;
  • прочее: всевозможные «свистелки» («bells and whistles») наподобие splash-заставки, диалога «About» и инсталлируемого zip-дистрибутива.

Kojo свободно распространяется по лицензии GPL. Доступны исходный текст, бинарные сборки и баг-трекер.

Интервью (на английском).

>>> Сайт Kojo

★★

Проверено: maxcom ()
Последнее исправление: INFOMAN (всего исправлений: 1)

>>Должен признать, что знакомство со Scala способно сильно расширить кругозор даже самого опытного разработчика в объектно-ориентированной парадигме. Я столкнулся с такими новыми (и очень мощными) концепциями как !!!Traits, Implicits, Abstract Types, полиморфизм type constructor'ов!!!.

Самый опытный быдлокодер детектед

anonymous
()
Ответ на: комментарий от Viglim

Нет, просто я думал, только модеры на боте трут посты...

helios ★★★★★
()

>Я — учитель математики в школе для девочек из малообеспеченных семей, в маленьком городке Dehradun в Северной Индии.

почему-то вспомнился саныч :)

dimon555 ★★★★★
()

Поставил и посмотрел примеры... не заметил, чем оно для детей принципиально лучше KTurtle (кроме «прелестей» функционального подхода). И по-русски, как я понимаю, не умеет?

northerner ★★★
()
Ответ на: комментарий от northerner

детям лучше всего турбопаскаль - ТРУ

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

wingrime
()

Ну вот, опять выходные убиты. Пошёл качать по всем ссылкам и сравнивать...

AlexVR ★★★★★
()

Скрины на сайте маленькие

eirth
()
Ответ на: комментарий от wingrime

> детям лучше всего турбопаскаль - ТРУ

Сколько турбопаскаль не три, а джинн не появится ;) а вообще-то речь идет о детях младшей школы, какой нафиг паскаль -

northerner ★★★
()
Ответ на: комментарий от dimon555

в маленьком городке Dehradun в Северной Индии


Неужели саныча тоже из Америки выгнали?

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

>Шо за беспредел

Это не беспредел, это произвол. А произвол разрешён правилами, пункт 2.3.

massimus ★★★
()
Ответ на: комментарий от Karapuz

> Scala единственная надежда для программистов для многоядерных компьютеров

Только скала может загрузить все ядра вашего процессора работой! Причем на любой программе!

anonymous
()

NetBeans: Lalit, здравствуйте.

А-а-а-а! Мёртвые разговаривают!

derrix
()
Ответ на: комментарий от anonymous

Параллелить интенсивные вычисления на ядрах процессора не очень хорошая идея, разве что так, по чуть-чуть, или паралелить работу с системой. А для вычислений есть OpenCL

Но нужно признать, в Scala очень хорошие функции параллельных вычислений. Пример: replicate.

Самое интерестное то, что replicate работает похожим образом с тем, как происходят OpenCL вычисления, и при этом классы Scala - управляемый код, который можна JITить в инструкции любого процессора. Это в суме означает, что если кто-то инвеситрует хорошие деньги, то вызов replicate (или специальный похожий вызов) можно будет опционально выполнять код на GPU. Правда появится много дополнительны проблем, например ограниченность набора инструкций GPU и как передавать данные.

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

vertexua ★★★★★
()

попробовал на днях IntelliJ IDEA Community Edition - офигенная вещь, если бы была поддержка С++, то нетбинс можно было бы закопать навсегда

annulen ★★★★★
()
Ответ на: комментарий от Karapuz

> Scala единственная надежда для программистов для многоядерных компьютеров

Кто-то уже отменил Haskell?

anonymous
()
Ответ на: комментарий от vertexua

> Но нужно признать, в Scala очень хорошие функции параллельных вычислений. Пример: replicate.

LOL, LMAO, ROFL. Вам бы литературу какую по функционалке почитать, что ли...

anonymous
()
Ответ на: комментарий от vertexua

> Например replicate хорошо можно прокрутить к OpenCL имелось ввиду

OpenCL сам по себе смахивает на функционалку. По сути OpenCL kernel работает как map f data. Т.е. применили преобразование к кусочку данных неявно. Штука хорошая, чего спорить, только слишком уж низкоуровневая. Плюс производительность будет зависеть от затачивания под особенности конкретной железки. Плюс пока что нет гарантированной портабельности кода. Надежда на портирование высокоуровневых языков под это дело.

anonymous
()
Ответ на: комментарий от Karapuz

> Scala единственная надежда для программистов для многоядерных компьютеров

Надежда программстов для многоядерных компьютеров работает на jvm? Мне страшно за наше будущее.

У неё нет будущего на многоядерных машинах, пока не портируют на erlang VM.

naryl ★★★★★
()
Ответ на: комментарий от wingrime

> детям в третьем классе нужно что то вроде лого-миров

Так сабж и есть в некотором смысле логомиры с заточенным на скалу синтаксисом. ИМХО KTurtle логомиристее Kojo.

northerner ★★★
()
Ответ на: комментарий от naryl

У неё нет будущего на многоядерных машинах, пока не портируют на erlang VM



facepalm.svg

Karapuz ★★★★★
()

> ...Traits, Implicits, Abstract Types, полиморфизм type constructor'ов...

...наподобие splash-заставки, диалога «About»...

...когда я стал задумываться об обучающей среде для детей, я не колебался в выборе Scala.

O_o это ж трындец какой-то.

zHACKa
()
Ответ на: комментарий от vertexua

> Тогда ждем в Scala.

Ну-ну. Желаю удачи!

Я тут на днях прочитал про for-comprehension в скале. Как-то разочаровало оно меня. Еще чуть-чуть и могли бы дотянуть до computation expressions как в f#. Но не вышло...

dave ★★★★★
()

> NetBeans: Каковы, по-Вашему, преимущества платформы NetBeans?

«Свет мой, зеркальце, скажи, я ль на свете всех милее?» — спрашивает IDE разработчика.

amix ★★★
()
Ответ на: комментарий от vertexua

Кстати да, тоже этот вопрос интересовал. Либо тесты врут, либо код программ неоптимален, либо всё же виртуальная машина Эрланга крайне неповоротлива.

anonymous
()

> Я столкнулся с такими новыми (и очень мощными) концепциями как Traits, Implicits, Abstract Types, полиморфизм type constructor'ов.

А дети не насрут в пелёнки от обилия подобных терминов? :)

anonymous
()
Ответ на: комментарий от anonymous

Да, это общеизвестно, интерптератор эрлагна неповоротлив. Эрганг не для быстроты создавался, а для возможности прозрачно распределять работу на много машин. Поэтому любая программа на Эрланге уступит даже лиспу и делфи

Karapuz ★★★★★
()
Ответ на: комментарий от naryl

У неё нет будущего на многоядерных машинах, пока не портируют на erlang VM


На многоядерных машинах прекрасно работают и scala и clojure и java. А JVM допиливают для Тилеры Tile-Gx100 http://www.linux.org.ru/news/hardware/4171670, у которой 100 ядер в процессоре. И никакова эрланга там нибудет

Karapuz ★★★★★
()

> в маленьком городке Dehradun

не может не настораживать название городка - Деградун

anonymous
()
Ответ на: комментарий от anonymous

[fat]Ну дык Индия же, т.ч. деградации можно не бояться — некуда.[/fat]

anonymous
()
Ответ на: комментарий от dimon555

> почему-то вспомнился саныч :)

Если хотите, перевод этой фразы (в общем-то, совершенно не обязательной) послужил в некотором роде фансервисом в адрес Саныча. :)

Kuka ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.