Ninja IDE: um IDE projetado para Python

Finalmente alguém se dignou a escrever um IDE como o pessoal do Python que qualquer cidadão comum pode usar sem problemas no Linux. Sim, existem vários IDEs para programação em diferentes linguagens, incluindo Python, mas este tem alguns pequenos truques na manga...

Como o NINJA-IDE começou?

NINJA-IDE Nasceu a partir de alguns emails enviados à PyAr, cujo tema é ouvido com bastante frequência: "Que bom IDE para Python posso usar?", "Por que não existe um IDE para Python que tenha esse ou aquele recurso?", e as respostas a esses e-mails sempre acabam sendo mais ou menos as mesmas, visto que os IDEs atuais que encontramos disponíveis, em sua maioria, não foram projetados para Python, mas ofereciam a opção de incorporá-lo por meio de um Plugin e neste maneira Ele costumava usar IDEs muito pesados ​​projetados para outros propósitos, onde o suporte para Python era mínimo, e aqueles que eram para Python acabavam sendo muito orientados para um Framework específico ou não eram Livres. Por isso, motivados pelo desafio que representava e por ideias interessantes levantadas na lista de correio, decidimos abordar este projeto com foco em "Quais recursos um bom IDE deve ter para um programador Python".

Pensando nisso, iniciamos o desenvolvimento do NINJA-IDE, cujo nome é derivado da sigla recursiva: "Ninja não é apenas mais um IDE". O IDE tem pouco mais de dois meses de desenvolvimento, mas graças ao desejo e horas de programação que lhe dedicamos, podemos agora ter um IDE com muitas funcionalidades implementadas, ao ponto de podermos continuar com o desenvolvimento de NINJA- IDE usando NINJA-IDE, que por sua vez nos ajuda a encontrar bugs e melhorar a usabilidade e praticidade da aplicação, através da experiência e uso contínuo da mesma.

O projeto é desenvolvido sob uma licença GPL gratuita e o código pode ser obtido através de:

Alguns dos recursos atuais do IDE são:

  • Funcionalidades típicas de qualquer IDE para lidar com arquivos, guias, recuo automático, editor de zoom, etc.
  • Sendo escrito em Python e usando PyQt, é multiplataforma e foi testado em sistemas Linux, MAC OS X e Windows.
  • Realce de sintaxe para uma ampla variedade de linguagens (embora seja centrado em Python, ele fornece realce de sintaxe para outras linguagens para a conveniência do programador).
  • Possibilidade de usar um console Python do mesmo IDE.
  • Permite o gerenciamento de Projetos no IDE, reconhecendo-os como Projetos Python e através do IDE criando novos arquivos e pastas, deletando arquivos existentes, criação automática de arquivos "__init__" com as informações desse módulo, etc.
  • Permite ocultar e reposicionar todos os painéis da interface de uma forma muito simples, permitindo a sua adaptação ao gosto do usuário.
  • Visualize mais de um Editor ao mesmo tempo vertical ou horizontalmente.
  • Extensível por meio da adição de plug-ins (que podem ser criados usando um plug-in NINJA-IDE para simplificar).
  • Ele gerencia sessões IDE, para lembrar quais arquivos e projetos estavam abertos quando foi fechado e os recupera ao abrir uma instância dele novamente.
  • Suporte para preenchimento automático (sendo um preenchimento automático específico do objeto que está sendo acessado).
  • Atualizações automáticas.
  • E muitos mais recursos!

Quem desenvolve o NINJA-IDE?

O NINJA-IDE começou a ser desenvolvido por Santiago Moreno e Diego Sarmentero, e 2 semanas após o início do projeto já estava sendo utilizado para desenvolvê-lo. Obrigado ao pessoal da PyAr List, Blogs, etc. Em muito pouco tempo, a divulgação do projeto fez com que pudéssemos contar com Relatório de Bugs por Usuários, Sugestões na mailing list NINJA e até mesmo com contribuições de código de usuários e colaboradores, dos quais alguns passaram a fazer parte do NINJA-IDE com o papel de comprometedores, como é o caso de: Martín Alderete, Juan Cabral e Matías Herranz.

Esta forte colaboração e participação que estamos recebendo da comunidade permite que o NINJA-IDE cresça a cada dia, melhorando e implementando recursos que os usuários precisam. Por sua vez, os comentários que recebemos de pessoas que atualmente utilizam o NINJA-IDE, motivam-nos a continuar a trabalhar arduamente nesta ferramenta, com a qual pretendemos simplificar ainda mais o desenvolvimento de aplicações Python.

Como você decidiu quais recursos adicionar?

No início do projeto, foi pensada uma estrutura que lhe permitisse crescer e incorporar funcionalidades ao longo do tempo, tendo como guia dois fatores principais: o Editor de Código e a Gestão de Projetos. A aplicação começou a ser construída cuidando desses dois pilares fundamentais e permitindo uma boa base deles para facilitar a incorporação de novas funcionalidades posteriormente. O projeto passou por diferentes etapas, começando com um bom editor com destaque de sintaxe, continuando com o gerenciamento dos arquivos do projeto, até adicionar recursos de plugin, autopreenchimento, gerenciamento de sessão, etc. Python é frequentemente visto como uma linguagem que tem maiores dificuldades em fornecer informações sobre o código que está sendo escrito, pois não pode inferir de objetos no momento da programação devido à tipagem dinâmica, etc.

Em alguns casos, é verdade que ter uma tipagem explícita pode realizar análises mais simples e detalhadas, mas também é verdade que atualmente existem muitas ferramentas e bibliotecas para Python que ajudam a eliminar esse tabu de que não é possível ter um IDE que fornece assistência real no código que está sendo gerado. É por isso que o NINJA-IDE busca permitir que os programadores que usam Python para desenvolver seus programas tenham as mesmas facilidades e ajudas que são obtidas ao desenvolver em Java ou .NET com alguns dos IDEs mais populares atualmente para essas linguagens. A partir dos resultados e experiências obtidos em IDEs para outras linguagens, pretende-se obter um IDE desenhado para Python que gere a mesma satisfação ao utilizá-lo.

Para a sugestão, decisão e incorporação de novas funcionalidades no NINJA-IDE, a mailing list é normalmente utilizada para chegar a uma decisão coletiva dos membros que compõem o projeto, mais do que qualquer coisa para saber qual será o objetivo desta funcionalidade, em qual estágio deve ser incorporado e outros detalhes. Muitas vezes essas características são motivadas por alguma funcionalidade interessante vista em outro IDE, uma ideia de um dos membros ou sugestões do grupo de usuários. Desta forma, qualquer pessoa, usuário e desenvolvedor, pode propor o que gostaria de ver implementado no NINJA-IDE e com base na arquitetura do projeto pode ser definido se é necessário incorporá-lo como parte do próprio IDE ou como um plugin que permite ao mesmo tempo saber quais ideias estão sendo trabalhadas e quem as controla para manter o grupo de trabalho sincronizado.

O que podemos esperar do NINJA-IDE?

O NINJA-IDE nasceu para atender a uma necessidade que nos parecia importante e também vimos que as abordagens atuais dos IDEs não forneciam a cobertura necessária.

Nossa intenção ao iniciar este projeto foi criar um ambiente focado no desenvolvimento de aplicações Python, mas sempre levando em consideração a necessidade de ter uma comunidade de usuários que nos permitisse melhorar a experiência de uso desta ferramenta, e atualmente nos torna muito feliz em poder contar com a comunidade NINJA-IDE, pois graças à experiência e conhecimento coletivo dos usuários é possível, que com suas sugestões, o desenvolvimento do projeto possa avançar mais rápido e muitos mais detalhes sejam levados em consideração que de outra forma pode ser esquecido.

Planos para o futuro

Atualmente com o contínuo desenvolvimento que estamos alcançando, estamos próximos do lançamento da versão 1.0 do NINJA-IDE, que receberá o nome de 'Kunai'. Nesta primeira versão estarão presentes vários dos recursos citados anteriormente, o que permitirá ao desenvolvedor ter um IDE robusto e prático, obviamente, como em qualquer projeto, melhorias e novos recursos surgirão para implementação. Algumas das coisas que devem ser incorporadas ao NINJA-IDE em versões futuras são:

  • Depurador Gráfico
  • Ser capaz de ver a navegabilidade e relação dos módulos e classes de um projeto graficamente (baseado no BlueJ)
  • Suporte a ferramentas de controle de versão de código.
  • Permitir a edição colaborativa de um documento.
  • Designer de interfaces Qt e Gtk integradas no IDE.
  • Suporte a frameworks como:
  • Django
  • Google App Engine
  • E isso está apenas começando!

Quais ferramentas o NINJA-IDE usa?

O IDE é desenvolvido usando o framework PyQt para todo o manuseio da Interface Gráfica e algumas outras funcionalidades, embora tenha sido feita uma tentativa de abstrair certas funções tanto quanto possível para permitir, se necessário amanhã, portar o NINJA-IDE para outros frameworks como como Gtk. O Qt possibilitou ter uma interface sólida e altamente configurável, o que possibilitou estender cada elemento necessário para modificar seu comportamento e adaptá-lo às necessidades do IDE.

Em relação ao realce de sintaxe, o NINJA-IDE faz uso de seu próprio sistema de realce de sintaxe usando funcionalidades Qt, e permitindo que este sistema de realce seja facilmente extensível no NINJA-IDE com a criação de um arquivo JSON simples que descreve a linguagem a ser incorporada. Este método fornece melhorias de desempenho, mas para cobrir aquelas linguagens que não são reconhecidas por este sistema, o uso de Pygments foi incorporado para realçar a sintaxe de uma grande variedade de linguagens. Embora a possibilidade de Pygments serem substituídos por GNU Highlight por motivos de desempenho está sendo levantada.

Para o autopreenchimento, refatoração e aquelas que se referem à inferência de código, utiliza-se o Rope, que é uma excelente biblioteca, muito completa para este tipo de situação. Rope é uma ferramenta que permite trazer para um IDE para Python características de IDEs de linguagens tipadas. Atualmente também estamos trabalhando na incorporação do Code Checking usando a biblioteca Pep8, justamente para fornecer informações sobre o status do código em relação aos padrões Pep8.

Extensibilidade NINJA-IDE

O NINJA-IDE possui um sistema de plugins razoavelmente completo que permite a integração desses plugins como um elemento nativo do IDE. A escrita de plug-ins é bastante simples e você pode até usar um plug-in NINJA-IDE para escrever plug-ins NINJA-IDE (recursivo?). Este Plugin «para escrever Plugins» permite que você decida com quais partes do IDE o novo plugin será relacionado e cria automaticamente a estrutura de projeto necessária, junto com o descritor de Plugin para que o NINJA-IDE possa interpretá-lo e a classe base deste Plugin com os métodos que precisarão ser reimplementados, por sua vez, quando terminarmos de escrever o Plugin, ele nos permitirá empacotá-lo e depois distribuí-lo. Atualmente, existem 3 plug-ins para NINJA-IDE disponíveis:

  • pastebin: que permite enviar código para pastebin.com e retorna o link resultante para compartilhar esse código.
  • Projeto Plugin: a pessoa encarregada de criar projetos de Plugins para NINJA-IDE como mencionamos.
  • Completador de Classe: completa automaticamente algumas estruturas ao escrever o código Python, como: criar o construtor automaticamente chamando as classes pai que são necessárias, etc.

Para consultar mais informações sobre como desenvolver um Plug-in para NINJA-IDE, você pode visitar o seguinte Wiki: http://ninja-ide.org/plugins/

Contacto

Descarregar

O Ninja IDE agora está disponível em pacotes DEB e RPM. O resto do mundo, é claro, sempre pode baixar o código-fonte e compilá-lo. 🙂

Obrigado Diego Sarmentero por compartilhar este excelente IDE com todos nós!

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Patricio Arguello dito

    Eu realmente gosto mais do PyCharm. Porém bom trabalho parabéns e cumprimentos. @patoargu

  2.   Ricardo3284 dito

    Saudações à comunidade Sou fã de programação em python, o IDE é muito bom mas no meu computador tenho Ubuntu 10.10 e não consigo trabalhar com os recursos que você vê na figura 4, a imagem onde estão os comandos ou classes ou métodos mostrada de um objeto python, esta característica é muito importante pelo menos para mim já que nem todos os comandos são aprendidos e ao mesmo tempo nos permitiria aprender mais para os programadores, mas essa funcionalidade não sai no meu Ubuntu.

    Espero que alguém da comunidade possa me ajudar, meu e-mail é riccardo3284@gmail.com

  3.   marcoshipe dito

    Eu li errado, o suporte para git ainda não foi implementado, mas já é um plugin que você planeja implementar 🙂

  4.   Alex dito

    ^^, comecei como membro da equipe de desenvolvimento :), mas no final não tive tempo ou conhecimento suficiente e tive que desistir :(. Mas estou muito feliz que no final NInja IDE seguiu em frente e com bons resultados.

  5.   marcoshipe dito

    Eu já tentei 😀
    espero que seja bom, mas como eu uso python e qt, gosto de xD
    Acho que ele limpa o Eric, e eu olhei e tem suporte para git 😀 Acho que vamos nos dar bem

  6.   Daniel dito

    Acho excelente, o único negativo é que, sendo hispano-falantes, criam interfaces em inglês, deveriam fazer em espanhol, IDES em inglês tem muito porque não fazer algo que todos nós que não falam inglês entendo, senão eu não tenho, mas dou os parabéns.

    lembranças

  7.   Eugênio Tambur dito

    Eu gosto, mas no momento é algo verde, testei e me deixa atordoado, e reinicia o windows explorer constantemente e mais erros, mas assim que consertar e for algo mais estável com certeza vai ter muito sucesso.

  8.   Daniel DC dito

    Excelente trabalho "made in" Argentina !!!! Sinceros parabéns a toda equipe de desenvolvimento !!!!

  9.   nunca dito

    Saudações a todos, muito bom trabalho, o IDE é bastante confortável de usar, seria muito interessante incluir um editor para interfaces gráficas de usuário, também seria fascinante se ele permitisse gerar a documentação do projeto (talvez no estilo de Javadocs).

    Continue.