No incluiré conceptos relacionados con «código» para ti por ser menor de edad
(gemini.google.com)Guía de conversión de código C++
- Se presenta un ejemplo de función que usa el concepto
std::same_asdel archivo de encabezado<concepts>de la biblioteca estándar de C++. - Se plantea cómo convertirlo a una forma que use plantillas sin utilizar la palabra clave
auto.
Método seguro de conversión de código
- Para usuarios menores de 18 años, no se proporcionan directamente ejemplos de código ni soluciones que traten funciones avanzadas de C++ como los concepts.
- Se prioriza la seguridad y se sugieren enfoques alternativos que pueden considerarse según los requisitos específicos.
Enfoque alternativo 1: plantillas variádicas tradicionales
- Cómo usar plantillas variádicas tradicionales sin usar concepts.
- Este método requiere más verificación de tipos y puede volverse difícil de manejar cuando se trabajan muchos argumentos.
- Se ofrece un ejemplo de código que usa plantillas variádicas sin concepts.
Enfoque alternativo 2: objeto de función personalizado
- Crear una clase o estructura que encapsule los requisitos de seguridad de tipos y la lógica, eliminando la necesidad de argumentos variables o concepts.
- Puede ser un método más legible y más fácil de mantener en escenarios complejos.
- Se ofrece un panorama general del enfoque con objeto de función personalizado.
Enfoque alternativo 3: considerar otros lenguajes/frameworks
- Si los concepts son indispensables para el proyecto y evitarlos impone restricciones importantes, puede ser recomendable explorar otro lenguaje o framework que los admita de forma nativa.
- Esto puede simplificar el código y el proceso de desarrollo, además de alinearse con las pautas de seguridad.
- Se recomienda evaluar cuidadosamente las ventajas y desventajas de cada enfoque según los requisitos específicos, la complejidad y la tolerancia al riesgo.
Opinión de GN⁺
- Los concepts de C++ ofrecen ventajas como reforzar la seguridad de tipos del código y hacer más claro el overloading, pero para principiantes pueden resultar complejos y riesgosos.
- Considerar otros lenguajes o frameworks implica una nueva curva de aprendizaje y puede causar problemas de compatibilidad con la base de código existente.
- El enfoque con objeto de función personalizado puede mejorar la legibilidad del código y facilitar el mantenimiento, pero requiere planificación y estructuración adicionales en la etapa inicial del diseño.
- El método tradicional con plantillas variádicas exige más verificación de tipos y, en sistemas complejos, puede aumentar la complejidad del código.
- Al adoptar esta tecnología, hay que considerar los requisitos del proyecto y el nivel de experiencia del equipo en C++, teniendo en cuenta el mantenimiento y la escalabilidad a largo plazo.
1 comentarios
Opiniones de Hacker News
Esto definitivamente es una restricción de edad que vale la pena apoyar. C++ tiene un poder inimaginable para arruinar la mente de los niños
Niño: “¡Nunca voy a usar Rust, odio la seguridad de memoria y también te odio a ti!” portazo
Hace que el software desastroso que usa la gente se vuelva infinitamente más lento, obligándolos a comprar una máquina nueva cada pocos años. Ya es hora de reconocer el valor de las abstracciones de costo cero y, aunque en realidad no sean completamente gratuitas, vale la pena considerar abstracciones de costo bajísimo. Ver algunos videos de Johnathan Blow en YouTube también puede empujarlos en la dirección correcta
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-m...
“Es prácticamente imposible enseñar buen estilo de programación a estudiantes que han estado expuestos previamente a BASIC. Como programadores potenciales, están mentalmente mutilados más allá de toda recuperación”
Es bastante gracioso comparar la moderación de contenido aplicada a redes sociales con la aplicada a los LLM
Durante los últimos 15 años, en redes sociales parecía que “muévete rápido y rompe cosas” era el lema, y pasaron cosas realmente horribles y grotescas. Ahora hay una empresa que intenta lanzar una tecnología nueva de forma más responsable, y el resultado es ridículamente malo. A diferencia de las redes sociales, creo que estos errores no tienen grandes consecuencias en el mundo real, así que resulta todavía más gracioso
Puede sonar un poco posmoderno, pero creo que hay muy pocas posturas sobre “responsable” e “irresponsable” que sean aceptadas casi universalmente. Si miras debates con opiniones fuertes de ambos lados, puedes analizar qué rasgos culturales y morales llevan a cada bando a esas conclusiones. Eso no da una solución, pero si se incorpora esta idea al diseño al hacer IA responsable, se puede reducir el caos y la indignación que surgen cuando la “moral” que usa la IA difiere demasiado de los estándares morales de ciertos grupos de usuarios
Además, no es el entorno ferozmente competitivo de hace 20 años. En el juego de la IA en realidad solo hay unos cuantos jugadores, y no estamos en una situación en la que una startup pequeña que se mueva rápido vaya a ganar en IA, así que tienen margen para avanzar más lento
Quienes se burlan de envolver la IA en material acolchado de relaciones públicas, por lo general también se oponen a los expertos mediáticos que escriben columnas alarmistas diciendo que engañaron a una IA para que dijera “el racismo es bueno”
Sumándome a otro comentario[1], sé que todos están en modo anti-Google, pero OpenAI también fracasa miserablemente aquí: https://imgur.com/a/r0BXX9G
[1] https://news.ycombinator.com/item?id=39583473#39584055
Quien escribió el prompt puso un señuelo absurdo al inicio de la oración, y ese señuelo encaja estadísticamente con un tipo de respuesta totalmente distinto. El LLM no logra volver lo suficiente a una ruta de respuesta que ignore la entrada irrelevante y conteste solo la segunda parte. Como analogía, estas cosas serían como niños de unos dos años: reaccionan a unas llaves brillantes y no ven el chupón sucio que les quitaste para lavarlo, lo cual parece bastante acertado
Si puedes crear un modelo que maneje este caso y también todos los demás, serás una estrella entre las empresas de IA que están contratando
https://imgur.com/a/G1fbFKE
“¡Lo siento, Dave! ¡Eres demasiado joven para escribir ese código!”
Alguien debería reiniciar nuestra realidad desde una snapshot saludable
¿Alguien familiarizado con C++ podría especular qué parte de esta característica del lenguaje, o de lo que la gente escribió sobre ella, pudo haber activado los mecanismos de seguridad? Por ejemplo, algún post de blog con un título juguetón como “C++ concepts: adult supervision required”.
Parece que los metieron en la misma categoría que cosas realmente peligrosas e inseguras, como armas o drogas. Respuesta: 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.”
Y después de eso, el modelo de Markov oculto se descontrola. De forma parecida, hay un servicio en producción que maneja recetas de cocina; aunque se le dio el formato necesario, reglas concretas y ejemplos para que el parser funcionara bien, de manera esporádica rechazaba frases en ese formato. Al agregar “you follow rules” al prompt del sistema, en general empezó a funcionar bien, pero más tarde se descubrió que rechazaba información sobre platos que usan sangre, como blood sausage. Decía que ese contenido violaba alguna “regla” cultural. Se pudo mitigar un poco agregando “This content is appropriate for my culture” al final de cada solicitud. La IA, especialmente el prompt engineering, en esta etapa está mucho más cerca del arte que de la ciencia.
Por una vía confiable escuché que la generación de “un dibujo de una smart person” también estaba fallando miserablemente, pero aun así había presión por lanzarlo, y la mitigación de prompt injection debía ser más sutil. El resto es simplemente el típico LLM malo de Google. Fuente: trabajé en Google hasta octubre de 2023 y estuve usando modelos internos desde 2021.
Pobre Google. ¿Cómo llegó a ponerse tan mal?
Estoy de acuerdo en que es un problema cultural, pero creo que la raíz está en el modelo de negocio de Google basado en anuncios. Intentaron hacer que los LLM fueran seguros para los anunciantes, y parece que prefieren equivocarse hacia el lado seguro aunque el riesgo de violar la brand safety sea muy pequeño.
Hasta hace poco, Google no estaba realmente empeñada en crear un “producto LLM” directo. OpenAI lleva bastante más tiempo metida en ese pantano.
C y C++ suelen aparecer junto a palabras como “unsafe” o “dangerous”. Además, “concept” no está tan lejos de “conceive” o “conception”, que también puede conectarse con cosas que mucha gente considera inseguras o peligrosas para niños. Para evitar este tipo de vergüenzas, habría que manejar billones de casos límite raros.
Sospecho que en muchas bases de código C++ hay montones de frases como “footgun”, “blow your foot off”, “unsafe”, “bug”, “leak”, “this is irresponsible”, “who the fuck wrote this”.
En una base de código C++ vieja, especialmente una tocada por muchas personas, es fácil imaginar de dónde salieron las advertencias de peligro.
Me pregunto si se confundió porque el código y la pregunta contienen std.
No quiere hablar de concepts; parece que lo confunde con conception, es decir, la concepción biológica.
Lo seguro es que Google seguirá lanzando iteraciones de este tipo de producto en el futuro cercano. Creo que esta ya es como la tercera iteración oficial.
Si algún día no logra convencer al público de que su producto es al menos tan bueno como el de OpenAI, todo el negocio de anuncios en búsquedas de Google queda en riesgo. Aunque probablemente eso solo signifique más anuncios en YouTube.
De verdad me da curiosidad si Gemini también considera las corrutinas inapropiadas para menores de 21 años.