LINUX.ORG.RU
ФорумTalks

JavaScript выбран в качестве основного языка разработки приложений для GNOME


0

3

На состоявшемся на днях съезде GNOME Developer Experience Hackfest команда разработчиков GNOME рассмотрела вопрос выработки рекомендаций по выбору языка программирования для разработки приложений, создаваемых для работы в GNOME. Мотивом определения рекомендованного по умолчанию языка стали участившиеся вопросы начинающих разработчиков о том, какой инструментарий надо использовать при написании приложений для GNOME. До настоящего момента однозначного ответа на этот вопрос не было, но теперь команда разработчиков GNOME решила стандартизировать JavaScript как язык для написания пользовательских приложений GNOME, одновременно рекомендуя язык Си для написания системных библиотек.

Съезд разработчиков GNOME состоялся перед открытием конференции FOSDEM 2013 в Брюсселе. По вопросу выбора единого языка для разработки приложений GNOME было достигнуто обоюдное согласие участников обсуждения, поскольку единый язык упрощает разработчикам подготовку документации и обмен знаниями с новичками, а также облегчает задачу по интеграции приложений, написанных для десктопа с использованием предоставляемой проектом инфраструктуры.

Выбор JavaScript обусловлен несколькими факторами:

* JavaScript уже хорошо поддерживается в GNOME 3, так как GNOME Shell использует его для реализации пользовательского интерфейса и дополнений;

* Наблюдается большая работа по оптимизации производительности JavaScript, его развития как встраиваемого и не зависимого от фреймворков языка;

* Имеется успешный опыт применения JavaScript для аналогичных целей в таких системах, как Windows 8, Firefox OS, webOS, Tizen и KDE, что, как надеется команда разработчиков, упростит работу новых членов команды GNOME;

* JavaScript прекрасно отвечает потребностям GNOME в динамическом и высокоуровневом языке;

* JavaScript является самодостаточным решением, легко интегрируемым в платформу и не связанным с собственным набором базовых библиотек.

Разработчики GNOME отмечают, что выбор JavaScript по умолчанию вовсе не означает отказ от поддержки других языков. Разработка существующих биндингов и обеспечение совместимости с различными языками программирования будет производиться как и раньше. «Очень важно понять, что данное решение направлено на выдвижение на первый план JavaScript, а также связанных с ним биндингов, инструментария и документации, с целью достижения нового уровня качества, но это решение ни в коем случае не означает забвения биндингов для других языков», подчеркнул Рейттер.



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

ты видимо читать не умеешь там тоже что писал border-radius только на английском

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

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

ССЗБ такие ССЗБ. Это всё равно, что случайно поставить пробел после ~ в rm -rf ~/.cache. var надо приучиться писать всегда, а убирать только в том случае, если действительно нужна глобальная переменная.

border-radius
()
Ответ на: комментарий от PolarFox

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

«use strict»;

P.S. js не люблю, но куда деваться.

Binary ★★★★★
()
Ответ на: комментарий от border-radius

А не проще ли объявлять локальные переменные простым присваиванием, а глобальные объявлять кейвордом, к примеру, global?

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

Ну вон в Go смогли опустить некоторые из ненужных скобок и сделать в парсере поддержку \n вместо ;.

О боже... Это теперь показатель качества языка - количество скобочек и точек с запятой? А программы видимо сами напишутся, когда мы все лишние скобочки расстреляем?

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

Ну да, единственный способ избежать ; в for - не юзать for, это я и так знаю. Либо юзать for...in, что во многих случаях практичнее.

border-radius
()
Ответ на: комментарий от PolarFox

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

border-radius
()
Ответ на: комментарий от BMX

а что будет с vala?

Единственное, что могу заключить из ОП-поста - его не будут рекомендовать. Биндинги в посте обещают делать также.

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

О боже... Это теперь показатель качества языка - количество скобочек и точек с запятой? А программы видимо сами напишутся, когда мы все лишние скобочки расстреляем?

Дело не только в скобочках. В некоторых языках (пальцем показывать не будем) есть такие замысловатые конструкции как new Integer(42) или Foo foo::Foo *myFoo = new foo::Foo(foo::FOO_INIT);. ЖС такого более менее избегает, но всё равно выглядит как говно даже по сравнению с lua, который по сути тот же js.

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

Остальное - неудачная попытка замаскировать КО-стиль под троллинг ;-фобов.

упорище

Если я покажу тебе свой последний код на JS, ты не поверишь, что он не прошёл через минификатор.

border-radius
()
Ответ на: комментарий от border-radius

>Если я покажу тебе свой последний код на JS, ты не поверишь, что он не прошёл через минификатор.

Так плохо пишешь? :}

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

Я не ;-фоб. Мне, конечно, не очень нравятся ;, но ещё больше мне не нравится бодание людей с парсером.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox
>>>var i = [new Number(42), 42, Number(42)]
[Number {}, 42, 42]
Deleted
()
Ответ на: комментарий от PolarFox

Хотите верьте, хотите нет, но в C++ вовсе не синтаксис и не обилие текста раздражает. Так что претензии к синтаксису языка мне (да и другим плюсовикам, вероятно) непонятны.

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

ну в крестах из неважных вещей меня бесит разделение на cpp и h (оно не обязательно но требование стиля), и шаблоны в которых можно сделать шаблон гранаты для ноги и выдернуть чеку из результата

Deleted
()

Я правильно понимаю что приложения на JS будут работать медленнее чем полные аналоги не на основе интерпретируемых языков?

Википедия говорит что да:

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

Зачем тогда это нужно?

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

js давно умеет компиляться в байткод даже такими страшными штуками как js интерпретатор на java (Rhino)

другое дело что авторы гнума могут таки интерпетировать js

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

Если они не совсем упоротые, наверное, будет в каком-то виде запряжен JIT

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

ну в крестах из неважных вещей меня бесит разделение на cpp и h (оно не обязательно но требование стиля), и шаблоны в которых можно сделать шаблон гранаты для ноги и выдернуть чеку из результата

Подозреваю в вас фаната vim. У меня переключение cpp/h одной клавишей F4 делается ;)

Кстати, в этом секрет многих срачей: претензии к языку оказываются претензиями к редактору кода.

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

телепатия вас обманула, на крестах я уже лет пять как не писал

а vim я юзаю лишь по необходимости - когда из альтернатив только nano

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

Кстати, в этом секрет многих срачей: претензии к языку оказываются претензиями к редактору кода.

Ггг. А еще отродье Страуструпа рвет шаблон зайчаткам интеллисенца в KDevelop, из-за чего интеллисенц случается рушит среду на одном и том же заголовке :) Ненависть, ненависть. Плюсы убили KDevelop! Сволочи!

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

да вроде нет, пытался зародиться но гномеры видно в апатии

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

а вот точно, недавно пытался разобраться отчего clemetine не умеет показываться по хоткею, при том что остальные хоткеи работают - в qtcreator вполне удобно

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

js давно умеет компиляться в байткод даже такими страшными штуками как js интерпретатор на java (Rhino)

Ну тогда ничего страшного.

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

Кстати, в этом секрет многих срачей: претензии к языку оказываются претензиями к редактору кода.

Если для редактирования ЯП нужен навороченный редактор, то проблема в ЯП.

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

Особо прикольно выглядели на нем прослойки для плюсовых либ, протягивающие их в С# :) Ну и сам C# в нативные проги с плугинскими АПИ были любители протягивать... Без С++.NET как оказалось, голый С# не умеет в экспорт - какие-то извращенцы вообще на IL это дело хачили. Очень надо видать было.

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

В KDevelope обычно трабла не решалась никак - кроме отключения зайчатков надмозга и... Переходом на eclipse, netbeans, vim, whatever...

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

тут видите ли какое дело... Изначально не особо нужен, если у вас в сорцах не каша с макаронами, но лень двигает прогесс в известном направлении :)

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

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

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

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

проверка опечаток компиляцией - маразм, причем тяжесть этого маразма осознается с опуханием проекта

ненене, это в тебе лень говорит - изначально был eyeball search - вычитка ДИКО ВРАЩАЮЩИМИСЯ глазами :) И немножко статических проверяторов типа lint

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