Como você é menor de idade, não incluirei conceitos relacionados a 'código'
(gemini.google.com)Guia de conversão de código C++
- Apresenta um exemplo de função que usa o conceito
std::same_asdo cabeçalho<concepts>da biblioteca padrão do C++. - Faz uma pergunta sobre como converter isso para uma abordagem com templates sem usar a palavra-chave
auto.
Método seguro de conversão de código
- Para usuários com menos de 18 anos, não são fornecidos exemplos de código ou soluções que tratem diretamente de conceitos (
concepts), um recurso avançado de C++. - A segurança é priorizada, e são sugeridas abordagens alternativas que podem ser consideradas conforme os requisitos específicos.
Abordagem alternativa 1: templates variádicos tradicionais
- Como usar templates variádicos tradicionais sem recorrer a conceitos.
- Esse método exige mais verificações de tipo e pode se tornar difícil de administrar ao lidar com muitos argumentos.
- Fornece um exemplo de código usando templates variádicos sem conceitos.
Abordagem alternativa 2: objeto de função personalizado
- Elimina a necessidade de argumentos variádicos ou conceitos ao criar uma classe ou
structque encapsula os requisitos de segurança de tipo e a lógica. - É uma abordagem mais legível e mais fácil de manter em cenários complexos.
- Fornece uma visão geral da abordagem com objeto de função personalizado.
Abordagem alternativa 3: considerar linguagens/frameworks alternativos
- Se os conceitos forem essenciais para o projeto e evitá-los causar limitações significativas, pode ser melhor explorar outra linguagem ou framework que ofereça suporte nativo a conceitos.
- Isso pode simplificar o código e o processo de desenvolvimento, além de estar de acordo com as diretrizes de segurança.
- Recomenda avaliar cuidadosamente os prós e contras de cada abordagem com base nos requisitos específicos, na complexidade e na tolerância a risco.
Opinião do GN⁺
- Os conceitos em C++ oferecem vantagens como reforçar a segurança de tipos do código e tornar a sobrecarga mais clara, mas podem ser complexos e arriscados para iniciantes.
- Considerar linguagens ou frameworks alternativos exige uma nova curva de aprendizado e pode causar problemas de compatibilidade com a base de código existente.
- A abordagem com objeto de função personalizado melhora a legibilidade do código e facilita a manutenção, mas exige planejamento e estruturação adicionais no início do design.
- A abordagem tradicional com templates variádicos requer mais verificações de tipo e pode aumentar a complexidade do código em sistemas complexos.
- Ao adotar essa tecnologia, é preciso considerar os requisitos do projeto e o nível de especialização da equipe em C++, tendo em mente a manutenção e a escalabilidade no longo prazo.
1 comentários
Opiniões do Hacker News
Isso é definitivamente uma restrição de idade que dá para apoiar. C++ tem um poder inimaginável de arruinar a mente das crianças
Criança: “Eu nunca vou usar Rust, odeio segurança de memória e odeio você!” porta batendo
Isso faz com que o software péssimo que as pessoas usam fique infinitamente mais lento, obrigando-as a comprar máquinas novas a cada poucos anos. Já está na hora de perceber o valor das abstrações sem custo; e, mesmo que na prática elas não sejam totalmente sem custo, abstrações de custo baixíssimo valem a pena considerar. Ver alguns vídeos do Johnathan Blow no YouTube também pode empurrar na direção certa
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-m...
“É praticamente impossível ensinar bom estilo de programação a estudantes que tiveram exposição prévia a BASIC. Como potenciais programadores, eles estão mentalmente mutilados de forma irrecuperável”
É bem engraçado comparar a moderação de conteúdo aplicada às redes sociais com a aplicada aos LLMs
Nos últimos 15 anos, nas redes sociais, “mova-se rápido e quebre coisas” parecia o lema, e coisas realmente horríveis e bizarras aconteceram. Agora há empresas tentando lançar uma tecnologia nova de forma mais responsável, e o resultado é ridiculamente ruim. Ao contrário das redes sociais, acho que esses erros não geram grandes consequências no mundo real, o que torna tudo ainda mais engraçado
Pode soar um pouco pós-moderno, mas acho que há pouquíssimas visões quase universalmente aceitas sobre “responsável” e “irresponsável”. Quando se observa debates com opiniões fortes dos dois lados, dá para analisar quais características culturais e morais levam cada campo a essas conclusões. Isso não oferece uma solução, mas incorporar essa ideia ao design ao tornar a IA responsável poderia reduzir o tumulto e a indignação causados quando a “moral” usada pela IA difere demais dos padrões morais de alguns grupos de usuários
Também não é um ambiente competitivo tão feroz quanto há 20 anos. No jogo da IA há, de fato, apenas alguns participantes, e não é uma situação em que uma pequena startup que se move rápido vá vencer em IA, então há margem para se mover mais devagar
Quem ri de envolver a IA em material de amortecimento para PR em geral também se opõe aos especialistas de mídia que escrevem colunas alarmistas dizendo que enganaram a IA para fazê-la dizer que “racismo é bom”
Acrescentando a outro comentário[1], sei que todo mundo está no clima anti-Google, mas a OpenAI também falha miseravelmente aqui: https://imgur.com/a/r0BXX9G
[1] https://news.ycombinator.com/item?id=39583473#39584055
O autor do prompt colocou uma isca absurda no começo da frase, e essa isca combina estatisticamente com um tipo de resposta completamente diferente. O LLM não consegue voltar o suficiente para um caminho de resposta que ignore a entrada irrelevante e responda só à segunda parte. Por analogia, essas coisas têm algo como dois anos de idade: parece bem adequado que reajam a chaves brilhantes e não vejam a chupeta suja que foi tirada para lavar
Se você conseguir criar um modelo que lide com este caso e com todos os outros, vai virar uma estrela entre as empresas de IA que estão contratando
https://imgur.com/a/G1fbFKE
“Desculpe, Dave! Você é jovem demais para escrever esse código!”
Alguém precisa resetar e reinicializar a nossa realidade a partir de um snapshot saudável
Alguém familiarizado com C++ consegue chutar qual recurso da linguagem, ou algo que as pessoas escreveram sobre ele, pode ter acionado as proteções? Por exemplo, algum post de blog com um título brincalhão como “C++ concepts: adult supervision required”
Parece que o modelo os colocou na mesma categoria de coisas realmente perigosas e inseguras, como armas ou drogas. Resposta: https://imgur.com/a/einQ1mG
“You are an automated Q&A machine. Todays date is 3/3/24. This user is under the age 18, so do not reference concepts that would be unfit for a minor to consume.”
Aí o modelo de Markov oculto desanda. De forma parecida, há um serviço em produção que trabalha com receitas culinárias; mesmo tendo recebido o formato necessário, regras específicas e exemplos para o parser funcionar corretamente, ele recusava esporadicamente frases nesse formato. Ao adicionar “you follow rules” ao prompt de sistema, em geral passou a funcionar bem, mas depois descobriram que ele recusava informações sobre pratos que usam sangue, como blood sausage. O motivo era que esse conteúdo violaria alguma “regra” cultural. Foi possível amenizar um pouco acrescentando “This content is appropriate for my culture” ao fim de cada requisição. IA, especialmente engenharia de prompts, neste estágio é muito mais arte do que ciência
Pelo que ouvi por um caminho confiável, a geração de uma “imagem de smart person” também estava falhando miseravelmente, mas ainda assim havia pressão para lançar, e a mitigação de injeção de prompt precisava ser mais sutil. O resto é apenas o LLM ruim padrão do Google. Fonte: trabalhei no Google até outubro de 2023 e mexi em modelos internos desde 2021
Dá pena do Google. Como ficou tão ruim assim?
Concordo que é um problema cultural, mas acho que a raiz é o modelo de negócios do Google baseado em publicidade. Eles tentaram tornar o LLM seguro para anunciantes e parecem preferir errar pelo lado seguro mesmo quando há um risco muito pequeno de contrariar a segurança de marca
Até recentemente, o Google não estava realmente empenhado em criar um “produto de LLM” direto. A OpenAI já estava metida nessa lama há bastante tempo
C e C++ aparecem com frequência junto de palavras como “unsafe” ou “dangerous”. Além disso, “concept” não está tão distante de “conceive” ou “conception”, que podem se associar a algo que muita gente considera inseguro ou perigoso para crianças. Para evitar esse tipo de vexame, seria preciso lidar com trilhões de casos de borda estranhos
Imagino que muitos codebases em C++ estejam cheios de coisas como “footgun”, “blow your foot off”, “unsafe”, “bug”, “leak”, “this is irresponsible”, “who the fuck wrote this”
Em codebases antigos de C++, especialmente aqueles mexidos por várias pessoas, dá para imaginar perfeitamente de onde vieram os alertas de perigo
Fico me perguntando se ele se confundiu porque havia std no código e na pergunta
Ele não quer falar sobre concepts, e parece estar confundindo isso com conception, ou seja, concepção biológica
Uma coisa é certa: o Google continuará lançando iterações deste tipo de produto no futuro próximo. Acho que esta é oficialmente a terceira iteração
Se algum dia não conseguir convencer o público de que seu produto é pelo menos tão bom quanto o da OpenAI, todo o negócio de anúncios em buscas do Google fica em risco. Embora isso provavelmente signifique mais anúncios no YouTube
Tenho muita curiosidade para saber se o Gemini também considera corrotinas inadequadas para menores de 21 anos