KDE Plasma utiliza JavaScript em diversos lugares da interface

https://diolinux.com.br/noticias/javascript-no-kde-plasma.html

Desenvolvedor do KDE comenta sobre a importância do JavaScript no desenvolvimento do Plasma e até mesmo do GNOME.

5 curtidas

n sou desenvolvedor. para mim, basta o botão funcionar e fazer oqé preciso fazer, quando eu o aperto.

Caramba, não sabia que o QML era baseado em Javascript.

Quais seriam os problemas em JavaScript que os desenvolvedores falam tanto?

Pelo texto parece que há um consenso…

JavaScript foi uma linguagem projetada em pouco menos de duas semanas, e nesse processo tomaram-se algumas decisões apressadas e/ou arriscadas que não agradaram todos os programadores ou que não são adequadas a todos os ambientes (essa última parte é especialmente relevante já que JavaScript foi bem além do seu nicho original de mero “tempero” para páginas da internet).

As palestras The Birth & Death of JavaScript e Wat (que, antecipo, são bastante exageradas e alguns argumentos tem réplicas bem-fundadas de programadores de JavaScript) elenca alguns dos comportamentos não muito previsíveis ou desejáveis que esse linguagem possui.

É o que o @Capezotte disse, mas muita coisa QML abstrai, então de uma perspectiva Qt, JS e C++ não parecem ter muitos problemas, tanto é que usando QML pra modelar a interface você nem precisa por a mão em JS:

import QtQuick 2.6
import QtQuick.Controls 2.0

// Eu desprezo fortemente a notação DNS reversa, me processa
import cpp.exemplo.binding 1.0

ApplicationWindow {
    id: root
    width: 300
    height: 480
    visible: true
    // ClasseApp é a classe C++ que a gente
    // passa pro QML
    ClasseApp {
        // E a gente pode separar QML de CPP assim 
        // pra mim faz sentido cpp
        id: cpp
    }

    TextField {
        // Pegamos a propriedade textoDigitado da nossa classe C++
        // E passamos pra propriedade text de TextField que por sua vez é do QML
        text: cpp.textoDigitado
        placeholderText: ("Digite um texto aqui")
        anchors.centerIn: parent

        // Note que basicamente estamos dizendo que ao disparar o evento
        // onEditingFinished devemos mudar a propriedade  textoDigitado do
        // objeto cpp que por sua vez é nossa classe C++
        onEditingFinished: cpp.textoDigitado = text
    }
}

Note que apesar de presente não usei uma linha de javascript e usaria (se realmente fosse implementar) praticamente apenas C++, então não vamos passar por nenhum problema do javascript, mas p exemplo acima ainda é “powered by javascript” porque é ele que faz a ponte com o C++

2 curtidas

Javascript moderno é uma linguagem linda, muito rápida usada em todos as áreas da computação.
Muitas aplicações famosas como vscode, skype, discord, slack, … são feitas em Js.
Quem chama de lento ou instável certamente não entende de tecnologia ou acha que entende e copia código do stackoverflow de anos atrás.

1 curtida

Não é pra tanto também, boa parte dos apps em Javascript seriam melhor aproveitados se fossem feitos em Lua (por uma série de motivos que não vem ao caso agora) Javascript não é lento mas pra ser rápido usa consideravelmente mais recursos que deveria

1 curtida

Desculpa, mas é pra tanto sim. Js move muitos aplicativos no celular, tv, pc.
Js também move a web como conhecemos hoje em dia (front-end e o back-end muitas das vezes).
Tem casos que seria talvez melhor fazer em Lua/Python/etc…? Com certeza, vai de caso a caso.
Falar que vai consumir “consideravelmente” mais recursos que deveria é errado.
Faça sua bateria de teste, coloque na balança as vantagens de usar Js e você ficaria surpreso com o resultado.
Nunca culpa uma linguagem de consumir “consideravelmente” muitos recursos, culpe os devs que não souberam otimizar a aplicação.
Especificamente no caso do KDE, foi uma boa escolha usar Js, mas Lua também teria sido uma boa escolha.

Javascript não é entendido pela máquina diretamente, ele não tem recursos para se desenvolver para desktop, tudo depende de rodar em.cima de alguma coisa que vai transpirar o javascript para alguma outra linguagem que vai transformar em bytecode que o Pc possa entender. Isso de transformar um coisa em outra toma tempo, e memória, creio que se o kde usasse C ou C++ ou Go ou Rust ele seria bem mais leve.

Apenas para eu ver se entendi.

KDE usa QT. Mas você pode fazer interfaces gráficas com QT, apenas, correto? Por que o KDE ainda usa o QML para isso?