Nouvelle publication

Rechercher

Article
· Avr 22 6m de lecture

Reflexões sobre Programação com IA Generativa

Há treze anos, obtive dois diplomas de graduação em engenharia elétrica e matemática, e logo em seguida comecei a trabalhar em tempo integral na InterSystems, sem usar nenhuma das duas. Uma das minhas experiências acadêmicas mais memoráveis e perturbadoras foi em Estatística II. Em uma prova, eu estava resolvendo um problema de intervalo de confiança moderadamente difícil. O tempo estava acabando, então (sendo um engenheiro) escrevi a integral definida na folha de prova, digitei-a na minha calculadora gráfica, escrevi uma seta com "calculadora" sobre ela e depois escrevi o resultado. Meu professor, carinhosamente conhecido como "Dean, Dean, a Máquina de Reprovar", me chamou ao seu escritório alguns dias depois. Ele não gostou nada do meu uso da calculadora gráfica. Achei isso irracional – afinal, era Estatística II, não Cálculo II, e eu fiz a parte de Estatística II corretamente... certo? Acontece que escrever "calculadora" sobre aquela seta me rendeu zero crédito na questão e uma risada do Dean; se eu tivesse omitido, teria tirado zero na prova. Eita.

Tenho repensado bastante nesse evento recentemente. A IA Generativa faz com que minha TI-89 Titanium, coberta de adesivos de estrelas por notas máximas nas aulas de matemática do ensino médio e modificada para rodar Tetris, pareça um tijolo de plástico superfaturado. Bem, era um tijolo de plástico superfaturado há 20 anos, mas ainda é hoje também.

  

My trusty old TI-89 Titanium

Riscos e Regras

Com o advento de ambientes de desenvolvimento integrado (IDEs) realmente bons e habilitados por IA, existe o potencial para que a IA faça o trabalho do desenvolvedor de software de nível inicial médio... certo? Se esse desenvolvedor de software de nível inicial estiver usando Python – ou alguma outra linguagem suficientemente popular na qual os modelos foram treinados – então sim. E se você se sentir confortável com o débito técnico de montanhas de código que podem ser lixo completo – ou pior ainda, majoritariamente bom com pequenos trechos de lixo escondidos – então sim. E se você tiver algum meio místico para equipar desenvolvedores de software de nível inicial em funções de principal/arquiteto sem exigir que eles escrevam nenhum código, então sim. Isso é muitas ressalvas, e precisamos de algumas regras para mitigar esses riscos.

Nota: estes riscos são independentes das preocupações com direitos autorais/propriedade intelectual que são de mão dupla: estamos infringindo código protegido por direitos autorais no conjunto de dados de treinamento ao usar a saída da GenAI? Estamos arriscando nossa própria propriedade intelectual ao enviá-la para a nuvem? Para este artigo, assumimos que ambos estão cobertos por nossa escolha de modelo/provedor de serviços, mas estas são grandes preocupações impulsionadoras no nível corporativo.

Regra nº 1: Escopo do Trabalho

Não use GenAI para fazer algo que você mesmo não conseguiria, além ou perto dos limites da sua compreensão e capacidade atuais. Voltando à ilustração original, se você está em Estatística II, pode usar GenAI para fazer Cálculo II – mas provavelmente não Estatística II, nem Estatística I e definitivamente não Teoria da Medida. Isso significa que, se você é um estagiário ou desenvolvedor de nível inicial, não deve deixar que ela faça nenhum do seu trabalho. Usar GenAI como uma busca no Google turbinada é totalmente aceitável, e usar um autocomplete inteligente pode ser OK, apenas não deixe que ela escreva código novo e do zero para você. Se você é um desenvolvedor sênior, use-a para fazer trabalho de desenvolvedor de nível inicial em tecnologias nas quais você tem proficiência de nível sênior; pense nisso como uma delegação semelhante e revise o código como se tivesse sido escrito por um desenvolvedor de nível inicial. Minha experiência de desenvolvimento de software assistido por IA tem sido com o Windsurf, que eu gosto nesse aspecto: consegui treiná-lo um pouco, dando-lhe regras e conselhos para lembrar, seguir e (como um desenvolvedor de nível inicial) ocasionalmente aplicar no contexto errado.

Regra nº 2: Atribuição

Se a GenAI escrever uma grande parte do código para você, certifique-se de que a mensagem de commit, o próprio código e qualquer documentação legível por humanos associada sejam muito claros sobre isso. Deixe óbvio: eu não escrevi isso, um computador escreveu. Isso é um serviço para aqueles que revisam seu código: eles devem tratá-lo como escrito por um desenvolvedor de nível inicial, não por você, e como parte da revisão devem questionar se a IA está fazendo coisas além da sua profundidade técnica (o que pode estar errado – e você não saberia). É um serviço para aqueles que olham seu código no futuro e tentam determinar se é lixo. E é um serviço para aqueles que tentam treinar futuros modelos de IA em seu código, para evitar o colapso e "defeitos irreversíveis nos modelos resultantes".


Regra nº 3: Modo de Aprendizagem e Reforço

Quando você está na faculdade cursando Estatística II, há algum valor no reforço das habilidades aprendidas em Cálculo II. Para ser honesto, esqueci a maior parte de ambos agora, por falta de uso. Talvez "Dean, Dean, a Máquina de Reprovar" estivesse certo afinal. Em situações em que seu objetivo principal é aprender coisas novas ou reforçar suas habilidades existentes, novas (ou de anos atrás!), fazer todo o trabalho sozinho é a melhor maneira de seguir. A prototipagem rápida é uma exceção (embora as Regras nº 1 e nº 2 ainda se apliquem!), mas mesmo no trabalho diário regular seria prejudicial tornar-se excessivamente dependente da GenAI para realizar tarefas de "desenvolvedor de nível inicial", pessoal ou organizacionalmente. Sempre precisaremos de desenvolvedores de nível inicial, porque sempre precisaremos de desenvolvedores principais e arquitetos, e o caminho entre os dois é uma função contínua. (Aí, eu me lembro de algumas coisas de matemática!)

Isso é algo que eu adoraria ver como um recurso de IDE: alternar para o "modo de aprendizado" onde a IA observa/orienta você em vez de fazer qualquer trabalho por você. Na ausência de alguma implementação personalizada em software, você também pode optar por usar a IA dessa maneira.

Regra nº 4: Reflexão

Não se perca no turbilhão de trabalho, entregas e reuniões. Reserve um tempo para refletir. Isso é importante em geral e importante no uso da GenAI especificamente.

  • Essa tecnologia está tornando minha vida melhor ou pior?
  • Está me tornando mais inteligente ou mais burro?
  • Estou produzindo mais valor ou apenas mais resultado?
  • Essa saída inclui dívida técnica incorrida por conveniência?
  • Estou aprendendo de forma mais eficaz ou esquecendo como aprender?
  • Como as soluções da IA se comparam às que tenho em mente? Ignoro algo que a IA presta atenção? A IA sistematicamente ignora coisas que são importantes para mim?
  • Estou me tornando como o ChatGPT, introduzindo sem alma e aleatoriamente listas com marcadores e texto em negrito nos documentos que escrevo? (Oh não!!)

Um Pensamento Final: GenAI e Desenvolvimento Baseado em InterSystems IRIS

Em um mundo onde os desenvolvedores esperam que a GenAI seja capaz de fazer o trabalho por eles – ou pelo menos torná-lo muito mais fácil – uma de duas coisas pode acontecer:

  • Tecnologias e linguagens dominantes (veja-se: Python) podem se tornar superdominantes, mesmo que não sejam as melhores para a tarefa em questão. Já que a GenAI é tão boa em Python, por que usar outra coisa?
  • Tecnologias e linguagens de nicho (veja: ObjectScript) podem se tornar mais palatáveis para os desenvolvedores. Aprender uma nova linguagem não é tão difícil se a GenAI puder ajudá-lo a começar rapidamente e fazer as coisas direito.

Minha esperança é que, à medida que fornecedores e líderes de desenvolvimento de software perceberem os riscos que descrevi, as ferramentas tendam a apoiar o último resultado – o que é uma oportunidade para a InterSystems. Sim, as pessoas podem simplesmente usar Python Embutido para tudo, mas nosso legado tecnológico e os pontos fortes da plataforma principal também podem se tornar mais palatáveis, e o ObjectScript pode receber o amor que merece.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Avr 22

Early bird discount for the InterSystems READY 2025

Hey Community,

Great news for all those of you who have missed the Super Early Bird discount for the InterSystems READY 2025! You still have a chance to get an Early bird discount up until 26th of May! So don't miss you chance to participate in the event of the year.

➡️ InterSystems Ready 2025

🗓 Dates: June 22-25, 2025

📍 Location: Signia Hilton Bonnet Creek, Orlando, FL, USA

Also, there are several ways you can get your passes without paying a dime!

  1. Check out our newest competition Code Your Way to InterSystems READY 2025. The rules are simple: upload your IRIS-based side project to Open Exchange, and record a short inspirational video about why you should be the one to get the pass to THE event of the year!
  2. Redeem the reward in your Global Masters My Rewards section if you have enough points. It comprises a ticket and a three-night hotel accommodation (Sunday, Monday, Tuesday). Please note that flights/transportation costs are not included.

We hope to see you there!

1 Comment
Discussion (1)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Avr 22

Try the new AskMe learning chatbot!

Hi Community,

We’re excited to introduce the AskMe assistant—try it out for yourself!

What is AskMe?

AskMe is a new AI-powered learning chatbot available in beta on product-specific documentation pages (v2024.3+) and the online learning website.

Look for AskMe next to the search bar on both sites.

AskMe (beta) button

Key Benefits

  • Get quick answers to your product questions.
  • Find relevant resources faster using natural language search.

Information is available on most products. See the full list of supported products and versions.

👉Try it and let us know what you think!

Use the thumbs up or down or the Feedback button () to help us improve your experience.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Avr 22

Programe seu caminho para o InterSystems READY 2025

Olá Comunidade! 

Sabemos que todo desenvolvedor tem pequenos projetos paralelos — aplicativos onde você experimenta novas tecnologias, testa ideias antes de implementá-las em soluções maiores ou simplesmente cria algo divertido por curiosidade. Mas e se um desses projetos pudesse levá-lo até o InterSystems READY 2025? 

Estamos lançando uma oportunidade única: mostre-nos sua paixão, criatividade, e amor pelo IRIS, e ganhe um passe livre para o InterSystems READY + hospedagem em hotel ! 

As regras são simples: carregue seu divertido projeto paralelo baseado em IRIS no Open Exchange e grave um pequeno vídeo inspirador sobre por que você deve ser o único a obter o passe para O evento do ano e ganhar!

Duração: 21 de Abril - 04 de Maio, 2025

Prêmios: acomodação em hotel e passes gratuitos para o InterSystems READY 2025!

🛠 O que você precisa fazer?

  1. Carregue o seu projeto baseado em IRIS no Open Exchange (Como publicar uma aplicação no Open Exchange). Seja criativo - pode ser útil, peculiar, divertido ou apenas algo que você sempre quis tentar. 
  2. Grave um pequeno vídeo inspirador (de até 5 minutos) :
    • Conte-nos como as tecnologias InterSystems ou a Comunidade de Desenvolvedores impactou o seu projeto ou a sua carreira.
    • Explique por que VOCÊ deve adquirir um ingresso para o InterSystems READY 2025.
  3. Envie seu vídeo e o link para a sua app através deste formulário.

🧠 Requisitos Gerais para Aplicações 

  1. Um aplicativo ou biblioteca deve ser totalmente funcional. Não deve ser uma importação ou uma interface direta para uma biblioteca já existente em outra linguagem (exceto C++). Não deve ser uma cópia e colagem de um aplicativo ou biblioteca existente.
  2. Inscrições aceitas: novos no Open Exchange. Nossa equipe analisará todas as inscrições antes de aprová-las.
  3. O aplicativo deve ser compatível com IRIS, IRIS for Health ou IRIS Cloud SQL. As duas primeiras versões podem ser baixadas como versões host (Mac, Windows) no site de avaliação ou podem ser usadas na forma de contêineres extraídos do InterSystems Container Registry ou Community Containers: intersystemsdc/iris-community:latest ou intersystemsdc/irishealth-community:latest.  
  4. O aplicativo deve ser de código aberto e publicado no GitHub ou GitLab.
  5. O arquivo README do aplicativo deve estar em inglês, conter as etapas de instalação e a demonstração em vídeo e/ou uma descrição de como o aplicativo funciona. 
  6. Um aplicativo pode ter apenas um autor

Observação: Nossos especialistas terão a palavra final sobre a aprovação da inscrição para esta iniciativa, com base nos critérios de criatividade e originalidade da abordagem. A decisão deles é final e inapelável.

👨‍💻 Quem pode participar

Qualquer membro da Comunidade de Desenvolvedores, exceto funcionários InterSystems ou contratados. Crie uma conta!

🏆 Prêmios

🥇 1º lugar: passe livre para o InterSystems READY 2025 + hospedagem em hotel

🥈 2º & 3º lugares: passe livre para o InterSystems READY 2025

❗️O prêmio não poderá ser trocado por dinheiro ou qualquer outra alternativa.

✨ Pontos Bônus 

Você pode aumentar suas chances de ganhar enviando atividades adicionais:

  • Publique um artigo técnico sobre seu projeto
  • Crie uma demonstração de vídeo extra do seu projeto
  • Compartilhe seu vídeo inspirador nas redes sociais usando a hashtag #Ready2025 e mencione @InterSystems e @InterSystemsDev

Inspire-se. Crie algo divertido. Compartilhe sua história.

É a sua hora de brilhar - PROGRAME o seu caminho para o InterSystems READY 2025! 

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Question
· Avr 22

Linked Stored Procedure Call - Need Results to populate further logic

I was wondering if someone could help me. In the past I have been able to call external Stored Procedures through a SQL Outbound Connection and have them return me the EnsLib.SQL.Snapshot to use within a BPL to extract data.

But this time instead of using a SQL Outbound BO to make the Stored Procedure call, I decided to create a Linked Stored Procedure through the %JDBC_Server to point to the Stored Procedure out on MS SQL.

However, I am struggling to get the code just right to return the Column value from the Linked Stored Procedure.

 set result = ##class(EnsLib.SQL.Snapshot).%New()
 set result = $SYSTEM.SQL.Execute("CALL osuwmc_Utils_EnterpriseDirDb.InterfaceCheckConnectMedCtrID('$Get(MedCtrID)')")
 while result.%Next(){
  set Loc = result.Get("OSUguestRoleDTL")
 }

Does not return me the value I am looking for because the rest of my code fails.

However, if execute CALL osuwmc_Utils_EnterpriseDirDb.InterfaceCheckConnectMedCtrID('<value>') from the SQL Viewer it will return a Result. If I do a do result.%Display() it shows me the result, so what am I missing? This is the first time I have tried to call a Linked Stored Procedure from within Object Script.

I need to get the value that is being returned within "OSUguestRoleDTL" to help me determine how to route the message and populate addresses within the HL7 message.

2 Comments
Discussion (2)1
Connectez-vous ou inscrivez-vous pour continuer