LINUX.ORG.RU

Вышел Pharo 7.0

 , , , ,


2

6

Сегодня вышла новая версия одной из самых популярных и развивающихся реализаций языка Smalltalk — Pharo.

Над релизом работали более 75 человек, были закрыты 2142 задачи, самые главные из которых:

  • Теперь Pharo поддерживает x64 для Linux и Mac. Версия для Windows также доступна, но находится в доработке.
  • Обновлен PharoLauncher — утилита для управления образами, сборками для Jenkins и различными версиями.
  • Изменен процесс сборки, теперь он поддерживает полный бутстрап из исходого кода. Это дает возможность создавать специализированные (микро)образы.
  • Iceberg (git-клиент) получил значительные улучшения и стал дефолтной системой по управлению кодом.
  • Calypso (краеугольный камень в PharoThings) стал новым системным браузером, заменив Nautilus. Он обладает множеством улучшений, в том числе в работе удаленно.
  • IoT теперь важная часть Pharo. PharoThings предоставляет внушительное количество утилит для разработки приложений под маленькие устройства.
  • UnifiedFFI значительно улучшен для работы с 64-битной Windows.

Также отмечается, что новая инфраструктура и процессы оказывают хорошее влияние на развитие платформы, а переезд на GitHub начинает окупаться уже сейчас.

P.S. Поздравляю всех причастных и интересующихся!

Скачать

Подробный список изменений

>>> Официальный анонс

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от Deleted

А как они обошли то что арифметика возвращает строки? :)

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

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

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

Я понял, на самом деле такое было в перл5, а ты наверное про перл6 который совершенно другой язык.

loz ★★★★★ ()
Ответ на: комментарий от no-such-file

В jre же нет компилера в комплекте, чтобы в рантайме загружать скрипты, так что не аналог «динамическим»

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

Это аргумент уровня все языки эквивалентны по Тьюрингу.

Хочешь сказать, что он тоже неверен? Тогда приведи пример IDE с магическими способностями.

Или ты действительно считаешь, что все языки программирования тьюринг-эквивалентны?

Зависит от качества тестов, а есть пример тупой ошибки которую ты не смог отловить тестом?

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

Но у коллег-фронтендщиков подобная фигня случается регулярно. Ну вот, совсем недавно — забыли проверить наличие поля у структуры. Сделали if (properties && properties.mainImage.url), ну и оно навернулось, когда properties было, но без mainImage. Тесты прошли.

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

Или ты действительно считаешь, что все языки программирования тьюринг-эквивалентны?

«Верхняя граница» языка - эквивалентность машине Тюьринга. Это значит что все более-менее развитые языки равны. Однако есть множество других факторов из-за которых люди выбирают например го, а не ассемблер.

Я пытаюсь донести что хоть ниодна ИДЕ и не имеет принципиально магических возможностей все же есть множество других факторов по которым смолтолки на голову выше какого-нибудь атома или идеи.

Сделали if (properties && properties.mainImage.url), ну и оно навернулось, когда properties было, но без mainImage. Тесты прошли.

Ну лол, я и говорю что тестируют то? Очевидно что код внутри if не был частью теста, в смолтолке это маловероятно. Просто потому что все что есть внутри это классы и методы. У каждого метода даже есть кружочек рядом показывающий есть ли тест, прошел ли он и запускался ли он после последнего изменения кода.

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

Прошлые заслуги — это хорошо конечно. Для истории.

Но в чем преимущества Smalltalk сейчас?

А то вот у какого-нибудь ObjectPascal (особенно в виде Delphi), Modula-2 или C++ было много заслуг в прошлом. Что вовсе не означает, что эти языки актуальны для разработки новых проектов в настоящее время.

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

Только вот питон жилец, а vw - нет.

То-то у VW с месяц назад новая версия вышла.

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

приведи пример IDE с магическими способностями

Вижуал Студия. Пишешь код, а она все ошибки сразу подчеркивает, очень классно.

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

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

За eval обычно бьют. Ногами.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

В 21 век, без генерации динамических выражений и возможностей метапрограммирования? У русских есть пословица с «кувшинным» рылом в «калашный» ряд.

Elixir, perl, lisp все приличные люди используют eval, наверное зря?

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

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

Каким боком тут eval? Для этого «приличные люди» используют макросы/дженерики.

no-such-file ★★★★★ ()

На чём надо программировать, чтобы был такой GUI красивый?

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

Это значит что все более-менее развитые языки равны.

Расскажи это авторам Agda, например.

все же есть множество других факторов по которым смолтолки на голову выше какого-нибудь атома или идеи.

Э-э-э... Не мешай в кучу IDE и язык. Я понимаю, что смоллтокеру трудно отличить одно от другого, но всё-таки это разные вещи.

Очевидно что код внутри if не был частью теста

Как раз-таки был. Объект properties с полем mainImage в тесте тоже попадался — а вот без оного, так получилось, нет.

У каждого метода даже есть кружочек рядом показывающий есть ли тест, прошел ли он и запускался ли он после последнего изменения кода.

Ой. То есть, вы все тексты запускаете на девелоперской машине??? Какое у нас сейчас тысячелетие на дворе?

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

Вижуал Студия.

Прекрасная IDE. Но насчёт «всех ошибок» ты явно загнул.

Miguel ★★★★★ ()
Ответ на: комментарий от no-such-file

eval (chop <>)? Как такое сделать с «макросы/дженерики», и кто будет раскрывать макросы в рантайм?

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

eval (chop <>)

Это не метапрограммирование.

Как такое сделать

Такое делать не надо. Если хочется сохранить лицо, конечно.

no-such-file ★★★★★ ()
Ответ на: комментарий от Miguel

Логические ошибки никто не сможет найти.

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

Да (если добавить «все» в начало — IDE умные, иногда отлавливают и ошибки в логике). Но вот что именно является логической ошибкой, а что — ошибкой типизации, зависит от языка.

Miguel ★★★★★ ()
Ответ на: комментарий от no-such-file

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

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

ну да, я больше спрашивал что бы не вышло такого что «я работаю над какой-то фигнёй за которую мне самому стыдно», т.к. я до этого про него ничего не слышал, кроме той информации что получил

actionless ★★★★★ ()

Смысл в таких ЯП, где ЯП намертво встроен в среду?

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

О, главный смолтокер. Зачем вот мне навязанная среда для программирования? Её хоть от конечного продукта можно оторвать?

Эта среда ещё в supercollider оправдана, а для general purpose ЯП ей нет оправдания

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

Да нигде она не оправдана. Банально прогрепать исходники, и то требует плясок с бубном.

Вроде, GNU Smalltalk без среды обходится, за что смоллтокеры его и не любят.

Miguel ★★★★★ ()
Последнее исправление: Miguel (всего исправлений: 1)
Ответ на: комментарий от dem

Если вы не заметили, то развитие динамических языков закончилось примерно в 60-х.

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

мне телеграму не присылали. Слышал в 90-х появились всякие питоны с руби.

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

Если вы не заметили, то развитие динамических языков закончилось примерно в 60-х.

А какие, интересно, предтечи были у Self-а и последовавшего за ним JavaScript-оа (которые используют прототипный ООП)?

Ну и куда уже упоминавшийся здесь Erlang отнести?

Это не говоря уже про тот самый Smalltalk, который подружил динамику и ООП, появившийся сильно позже 60-х.

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

Пусть yoghurt меня поправит, но, по-моему, в восьмерке обещали окончательно отвязать. С некоторой натяжкой можно сказать, что уже сейчас ничего не мешает пользоваться другой средой, спроси у того же йогурта, он писал интерфейс к емаксу.

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

Логические ошибки в языке с достаточно мощной системой типов найдёт тайпчекер.

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

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

Erlang

Так и быть, модель акторов родом из 70-х, тут я не прав.

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

в 90-х появились всякие питоны с руби

Вот это конечно был прорыв в информатике (нет)

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

Почему нет популярного статически типизируемого скриптового языка? Я только AngelScript нашел

У него есть разнообразные нишевые аналоги. Вот к примеру https://gluon-lang.org . Другой вопрос что из них нет популярных.

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

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

Вау. Вам ведь не затруднит показать образчик «словарика с функциями», который хотя бы отдаленно походил на ООП, из 1960-х?

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

образчик «словарика с функциями», который хотя бы отдаленно походил на ООП, из 1960-х?

C++, правда он чутка позднее родился.

q0tw4 ★★★★ ()

Кстати, куда подевался self? Он же должен был стать новой версией smalltalk. А получилось как с perl6.

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

Это когда C++ успели записать в динамически-типизированные языки?

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

Тогда до компьютеров ещё не дорвались идиоты настолько, чтобы подумать, что это хорошая идея.

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

Не могу утверждать точно, что это будетв 8ке, но над headless images работа ведется уже давно и на последней сходке обещали что «точно будет» (когда-нибудь)

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

Тогда до компьютеров ещё не дорвались идиоты настолько

И кто же тогда завершил развитие динамически типизированных языков в 1960-е годы? Это ведь ваши слова, не так ли:

Если вы не заметили, то развитие динамических языков закончилось примерно в 60-х.

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

В динамически-типизированных языках испокон веков небыло проблем с реализацией полиморфизма.

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

В динамически-типизированных языках испокон веков небыло проблем с реализацией полиморфизма.

В 1960-х годах?

Ну тогда примеры ОО-языков с динамической типизацией из 1960-х в студию. Может хоть у вас получится.

eao197 ★★★★★ ()
Ответ на: комментарий от no-such-file

За eval

Ты будешь в шоке, но в твоих любимых лиспах, пхп и перлах, любой запуск програмы, любой импорт, есть самый банальный eval, стыдливо спрятанный за словом «include» или «use»

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

1960-х

Я не такой старик, чтоб знать, что тогда было. И вообще тогда врядли были динамические языки, так как железо тех времен не потянуло бы. Вот в 80-х уже всё было.

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

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

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

Есть еще http://factorcode.org и ему подобные, которые могут либо использоваться в режиме скриптования либо компилироваться. Да что уж там, тот же хаскель можно использовать как скрипт или чего уж там, котлин. Ну или typed/racket. Но это всё уже не встраиваемое, так что немного из другой оперы.

q0tw4 ★★★★ ()
Последнее исправление: q0tw4 (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.