Como escrever código usando o Cursor
(arguingwithalgorithms.com)O que é o Cursor
- O Cursor é um fork do Visual Studio Code (VS Code), com recursos baseados em Large Language Model (LLM) integrados à interface principal
- É um produto proprietário, com camada gratuita e opções de assinatura
- Principais recursos:
- Autocompletar com Tab: modelo proprietário com ajuste fino para autocompletar código e avançar para a próxima ação sugerida, disponível apenas para assinantes
- Edição inline: interface baseada em chat disponível para usuários gratuitos e pagos, que edita o código selecionado usando visualização de diff
- Barra lateral de chat: interface baseada em chat disponível para usuários gratuitos e pagos, oferecendo mais espaço para discussões mais longas
- Composer: interface baseada em chat projetada para grandes refatorações em vários arquivos, disponível para usuários gratuitos e pagos
Autocompletar com Tab
- É o recurso mais natural de usar ao escrever código e o que mais economiza tempo
- Não apenas sugere conclusões para uma linha, várias linhas ou uma função inteira, como também sugere a próxima linha para a qual você deve ir na próxima edição
- É possível pressionar a tecla Tab repetidamente para autocompletar alterações relacionadas em todo o arquivo
- Pode ser usado como ferramenta de refatoração de código
- Às vezes encontra bugs por conta própria e sugere correções
- Ao colocar uma string entre aspas, faz o escape adequado do conteúdo
- Consegue escrever uma função inteira apenas com a assinatura da função e um docstring opcional
- As sugestões de conclusão são muito rápidas
- Desvantagens:
- Se você continuar digitando sem ver a sugestão a tempo, a sugestão de conclusão desaparece
- Às vezes, depois de rejeitar intencionalmente uma conclusão incorreta, ao aceitar outra conclusão mais tarde, a sugestão rejeitada anteriormente acaba sendo aplicada silenciosamente
Edição inline, barra lateral de chat e Composer
- A interação com o modelo base (principalmente o Claude 3.5 Sonnet) é muito parecida, com diferenças na interface do usuário
- A edição inline é chamada com Ctrl-K/Cmd-K, e permite inserir a alteração desejada e receber um diff que pode ser aceito ou rejeitado
- A barra lateral de chat é aberta com Ctrl+L/Cmd+L e oferece mais espaço para conversar várias vezes
- O Composer foi projetado para refatorações em vários arquivos e oferece uma experiência melhor para revisar diffs de vários arquivos, um por vez
Arquivo .cursorrules
- O conteúdo do arquivo .cursorrules, localizado na raiz do workspace, é sempre incluído nos vários formatos de chat para fornecer contexto adicional
- Ele é usado para informar o LLM sobre os padrões de código do repositório, pacotes comuns e outros documentos
- Pode ajudar a resolver um dos grandes obstáculos do Cursor: não seguir estilos e padrões de código, a menos que eles já existam no arquivo que está sendo editado
- Atualmente há apenas um arquivo por workspace, então monorepos com código em várias linguagens são mais difíceis de configurar do que repositórios pequenos com conjuntos de código menores e de estilo consistente
- O arquivo .cursorrules é usado apenas nos formatos de chat e não no autocompletar com Tab
Mudanças no fluxo de trabalho
- O mais interessante não é o fato de ser possível escrever código mais rápido
- Na prática, escrever código em si não é o gargalo
- O verdadeiro valor está em mudar a forma de escrever código
- O que mudou:
- A probabilidade de procurar novas bibliotecas ou frameworks diminuiu bastante
- Para utilitários pequenos, é mais fácil deixar o LLM escrever algo sob medida para os requisitos do que importar uma biblioteca genérica
- Muitas bibliotecas existem apenas para reduzir boilerplate, mas como o LLM pode fazer isso, o custo já não parece tão justificável
- Há menos preocupação em seguir rigidamente o princípio DRY (Don't Repeat Yourself) no próprio código
- Definir abstrações cedo demais pode gerar muita dívida técnica depois
- Como é possível gerar bastante código referenciando outros trechos, sem tentar transformá-los em funções ou classes, ganha-se mais flexibilidade
- A disposição para usar linguagens ou frameworks menos familiares ficou muito maior
- Por exemplo, havia dificuldade em usar R, mas agora basta descrever a visualização desejada para obter a manipulação de dados correta e uma visualização em ggplot
- Pequenos componentes estão sendo iterados rapidamente antes de serem integrados a codebases maiores
- Isso também ajuda a lidar com as limitações do LLM, mas abre formas interessantes de trabalhar que antes nem eram consideradas
- A probabilidade de procurar novas bibliotecas ou frameworks diminuiu bastante
Resumo
- No momento, o Cursor é o melhor exemplo do potencial dos assistentes de programação com LLM
- Se você quiser explorar como esse tipo de ferramenta pode ser valioso, vale a pena experimentar o Cursor
Opinião do GN⁺
- O Cursor parece ser um bom exemplo do potencial das ferramentas de programação baseadas em LLM
- Em especial, o recurso de autocompletar com Tab é atraente por ser natural de usar ao escrever código e por economizar bastante tempo
- Os recursos baseados em chat também parecem poder ser úteis para refatoração e transformação de código
- Ainda assim, por estar em estágio inicial, também parece haver limitações
- Dificuldade para aplicar um estilo de código consistente
- Problemas de usabilidade em estruturas de projeto complexas, como monorepos
- Falta de clareza na diferença de recursos entre usuários gratuitos e pagos
- Outras ferramentas com recursos semelhantes incluem GitHub Copilot, Tabnine e Kite
- Como cada ferramenta tem seus prós e contras, a escolha deve considerar as características do projeto e a preferência pessoal
- Ao adotar ferramentas de programação baseadas em LLM, vale considerar pontos como:
- Aceitação da equipe de desenvolvimento: se há resistência à adoção de novas ferramentas
- Custo de aprendizado: quanto tempo será necessário para aprender a usar a ferramenta
- Manutenibilidade: se o código gerado pela ferramenta é fácil de entender e manter
- Qualidade do código: se realmente ajuda a melhorar a qualidade do código
- Custo-benefício: se o ganho de produtividade compensa os custos de adoção e manutenção
6 comentários
O chat do Cursor é a chave. Achei bem prático para gerar
docstrings.Depois de usar o Cursor, o preenchimento automático do Copilot parece lento demais. ;_;
O autocompletar com Tab só é possível para quem paga?
É verdade que é algo disponível só para assinantes, mas existe uma assinatura gratuita e ela oferece 2.000 autocompletes por mês. Estou usando assim há 3 meses.
https://www.cursor.com/pricing
Sim
Está escrito no texto kkk