Closed edusantana closed 7 years ago
Oi @edusantana. Muito obrigado pelo seu posicionamento. Acredito que estes questionamentos contribuem para o crescimento da ferramenta e da equipe, pois nem sempre as decisões tomadas são as melhores. Podes ficar sempre à vontade para expressar a tua opinião.
Dito isto, existe uma justificativa para que este e outros dados do Portugol Studio estejam no arquivo de código fonte, conforme descreverei abaixo.
Primeiramente, acredito que manter estes dados é muito importante. Além da posição do cursor, gravamos também o dobramento de código, os pontos de parada e as variáveis inspecionadas. Todas estas informações auxiliam o usuário pois permitem que ele volte a editar o código de onde parou quando o arquivo é aberto novamente. É muito irritante em algumas IDEs, como o Netbeans, por exemplo, quando você faz um dobramento de código e ao abrir seu projeto de novo, os métodos estão todos desdobrados de novo. :-(
Uma vez definido isso, entra a questão das premissas da ferramenta. Um dos objetivos do Portugol Studio é ser o mais simples possível para o usuário utilizar. Se você analisar, vai perceber que a interface da ferramenta tem só 4 botões principais. Todas as coisas secundárias, como alterar o tamanho da fonte, por exemplo, estão "escondidas" em botões pequenos nos cantos dos painéis para não poluir a interface. Não adianta ter 300 botões com as funcionalidades mais extravagantes e quando o usuário abrir a interface não saber em qual botão clicar.
Seguindo esta premissa, decidimos não incorporar no Portugol Studio o conceito de "projeto". Isto porque na maior parte das IDEs este conceito dificulta o contato inicial com a ferramenta. Nestas IDEs, o aluno tem que primeiro configurar um projeto, o que muitas vezes envolve linkar um compilador, definir variáveis de ambiente e várias outras coisas, para daí começar a programar. No Portugol Studio ele clica em um botão e começa a programar.
A questão toda é que, para guardar este tipo de metadados em um local que não seja o arquivo de código fonte, teríamos que introduzir o conceito de projeto ou utilizar outros mecanismos que, na minha visão, diminuem a versatilidade da ferramenta.
Por exemplo, poderíamos criar um arquivo separado do código fonte com a extensão ".metadata". Porém se o usuário quisesse copiar o código fonte para um pendrive, ele teria que levar este arquivo junto ou perderia as informações.
Outra possibilidade, seria salvar esta informações na pasta de configurações do Portugol Studio. Isto já acontece com os temas, por exemplo. Porém ao programar em um computador, quando o usuário copiasse esse arquivo fonte para outro computador, teria perdido toda a informação.
Incluir estes metadados no proprio arquivo, permite entregar estas facilidades para o usuário sem complicar a vida dele. Com esta abordagem, não importa para qual local o usuário leve o arquivo, as informações sempre estarão lá para ele.
Veja também que estas informações do Portugol Studio estão em uma seção de comentário, então não interferem em nada no funcionamento do algoritmo. Caso o usuário não abra o arquivo em outra ferramenta, ele nem vai perceber que elas estão lá.
Além disso, outras IDEs também utilizam metadados no próprio arquivo para determinados recursos.
Netbeans usa isso:
// <editor-fold defaultstate="collapsed" desc=" description">
....
// </editor-fold>
Visual Studio usa isso:
#region description
...
#endregion
Oi @noschang
Ok, entendo. Neste caso eu recomendaria adicionar uma configuração no studio que pudesse desabilitar esse comportamento (que poderia vir habilitado por padrão). Pode ser até uma variável de ambiente, caso não queiram alterar as telas de configuração.
O salvamento dos arquivos modificam até sua codificação:
programa.por
programa
{
funcao()
{
cadeia s="Este arquivo está com codificação uft-8"
}
}
Codificação original:
file ~/programa.por
/home/eduardo/programa.por: UTF-8 Unicode text
Conteúdo depois de abrir e salvar no studio:
programa
{
funcao()
{
cadeia s="Este arquivo est� com codifica��o uft-8"
}
}
/* $$$ Portugol Studio $$$
*
* Esta se��o do arquivo guarda informa��es do Portugol Studio.
* Voc� pode apag�-la se estiver utilizando outro editor.
*
* @POSICAO-CURSOR = 86;
*/
Codificação alterada:
$ file ~/programa.por
/home/eduardo/programa.por: ISO-8859 text
Dessa forma, dificulta até a edição do arquivo fora dele. Eu ia até cadastrar um issue separado sobre a codificação. O salvamento dos arquivos deveriam utilizar a codificação do sistema. E permitir a configuração do studio para não salvar metados nos códigos fonte.
Estes dados são referentes a IDE, e ela sabe como tratá-los e esconde-los, bem como é feito por outras IDEs. Não existindo outra maneira (atualmente) de compilar o código sem ser pelo Portugol Studio, não vejo o porque não prender os arquivos criados pela IDE ao seu padrão.
Ainda assim, é possível facilmente remover os comentários com uma expressão regular, caso outra IDE queria abrir os arquivos salvos pelo Portugol Studio.
Desta maneira, foi decidido que esta modificação, ao menos por hora, não é aplicável.
Bom dia @AlissonSteffens
Sobre seu comentário "não vejo o porque não prender os arquivos criados pela IDE ao seu padrão", equivale ao funcionamento de códigos fontes no formato binário, que necessita de um software especial para edição, o que não parecia ser a intenção original.
Mas se é essa a intenção, tudo bem, mas recomendo especificar na documentação: todos os arquivos fontes devem obrigatoriamente estarem na codificação ISO-8859. Pois dessa forma quem desejar editar os arquivos por fora, saberia que deve tomar o cuidado de utilizar esta codificação, especialmente que utiliza o linux, que vem com UTF-8 por padrão.
@edusantana o char-set faz sentido, estamos inclusive já fazendo testes para verificar a possibilidade de transformar tudo em UTF-8, vou dar continuidade ao processo aqui ( #225 )
Eu sou contra a inclusão da posição do cursor, através de comentários, nos códigos fontes ao salvar os arquivos:
O problema para mim é que se eu desejo incluir um arquivo .por em um documento escrito em latex, eu preciso remover esses comentários manualmente. Aparentemente parece um problema simples, mas vamos supor que eu faça uma alteração manualmente no código... daí eu tenho que testar no Portugol e depois remover novamente.
Enfim, vários editores de textos implementam mecanismos para retornar a edição em uma posição específica dos arquivos, sem alterar o código fonte.
Testado na versão 2.2 no linux.