Hace 9 años | Por mr_b a isocpp.org
Publicado hace 9 años por mr_b a isocpp.org

La especificación de C++14 ha sido aprobada y será enviada a la Organización Internacional de Normalización (ISO) para su publicación. Bjarne Stroustrup, creador de C++, ha dicho que “C++14 fue entregado a tiempo y las implementaciones ya están siendo desplegadas por los principales proveedores. ¡Esto es excepcional! Es una bendición para la gente que desea utilizar C++ como un lenguaje moderno”.

Comentarios

sorrillo

Osea el C++++++++++++++

w

#2 yo no C

Schani

#5 codigo ilegible?

Katsumi

Me sorprende no haber visto este notición en ningún telediario, cuando todos sabemos que cambiará la vida en la Tierra tal y como la conocemos.

RojoVelasco

#27 Hombre, la sintaxis de C lleva suficiente tiempo entre nosotros como para que ese for sea legible. Es un estándar de facto. Se hizo como se hizo en su momento y en mi opinión es algo que no tiene sentido cambiar ahora mismo.

Lo que no tenia perdón eran los chorizos que tenias que poner para recorrer un contenedor, ahora en cambio:
for(int element : vector);

eltxoa

#6 Ni idea. No volví a tocar el c++ desde hace muchos años. Prácticamente esta olvidado. Debería refrescarlo.

Lamento no poder contestarte adecuadamente.

D

#13 Estar en Meneame durante las vacaciones es para hacérselo mirar. Pero te lo digo de buen rollo, eh.

Katsumi

#19 #21 Completamente de acuerdo. Igual que Linux, o Windows (le pese a quien le pese). Pero resulta cansino ver en portada cosas como "nueva versión 58 del Kernel, que implementa asignación intrínseca de gamusinos binarios" o "aprobado el estándar PHP 198 que mejora la prestaciones de los retornos de carro recursivos en entornos x64".

La noticia puede estar en lo que aporte una versión de lo que sea, que sea realmente novedoso o importante, pero sacar en portada simplemente que un lenguaje o un SO tiene una nueva versión... yo eso no lo entiendo.

Baro

#27 ¿Y qué problema tiene eso? Es un for clásico de toda la vida, que además se amolda para todo tipo de inicializaciones, condiciones y pasos, como por ejemplo la forma clásica de iterar un contenedor:

for (std::vector::iterator it = v.begin(); it != v.end(); it++)

(Aunque como te dice #26 esto ahora se puede hacer de una forma más bonita: for(auto x : v) )

l

#44 yo la elegancia la veo es que aunque cambies el tipo de contenedor para v, el nombre de la clase que estas escribiendo o incluso cambiases el prototipo y tipo recibido por la función op seguirá funcionando sin necesidad de refactorización. Y todo typesafe.

D

Es una bendición para la gente que desea utilizar C++ como un lenguaje moderno

Bueno... si él lo dice será verdad.

Baro

#37 Si la gente vota el enlace... a veces nos olvidamos de que menéame no es un periódico donde un director decide qué contenidos suben y cuales no. Aunque estoy de acuerdo contigo, yo esta noticia la pondría dentro de un sub pprogramacion o algo así.

mr_b

#97 No, no me refería a cambiar en entornos laborales, en absoluto. Distingo entre trabajo y amor. Y tú has dicho que C++ te tiene enamorado, así que prueba D si quieres más amor

Además, D todavía está en desarrollo. Además están en una fase de investigación bastante grande; el lenguaje es estable, pero de vez en cuando cambian algo importante (para mejor, habitualmente) que hace que sea bastante complicado de usar en entornos laborales.

Pero, lo dicho, es amor

mr_b

#26 Si C++ te tiene enamorado, creo que deberías echarle un vistazo a D http://dlang.org

#21 Y Cobol, no te olvides de Cobol

Nitros

¿Van a meter lambda functions y chorradas inline de estas que hacen el código ilegible?

ElPerroDeLosCinco

#15 Pues si te digo que es lo primero que hago por las mañanas después de desayunar...

O

#13 ¿¿¿Qué tiene de malo el for de C???

D

#58 No, es indeterminista porque la salida depende como realices la comparaciones así que puedes tener resultados distintos. Eso pasa cuando no se cumplen las propiedades de una relación de orden.

Si NULL < -1 y NULL==0 entonces un algoritmo puede "suponer" que 0 < -1 por transitividad. Si lo miras desde otra perspectiva, no tiene sentido que si a < b y b < c entonces al comparar a y b tengas algo como c < a

Así que al ordenar "algo" puedes tener cosas como:

Está ordenado: -1, NULL, 0
Está ordenado: NULL,-1, 0

Ahí quizás el problema parece irrelevante, pero si tienes más elementos podría pasar algo así:

Esta ordenado: -5 -3 -1, 0, 0, NULL
Está ordenado: -2, -1, 0, NULL, -5, -3, 0.


Eso ocurre porque no se cumple la transitividad, así que algoritmos que hacen log(n) comparaciones pueden dar resultados indeterministas.

No te lo tomes a mal, pero eso pasa cuando se programa sin tener una base real de lo que se está haciendo.

Nitros

#27 Con "Step 2" le estás diciendo qué (what) tiene que hacer, con x+=2 le estás diciendo cómo (how) lo tiene que hacer.

La gracia de los lenguajes imperativos es era que el programador dice cómo se tienen que hacer las cosas. Luego llegamos al punto en que los lenguajes imperativos permiten aberraciones como permitir recorrer instancias de cosas que implementan tal o cual clase/interface, donde el programador acaba no teniendo ni puta idea de como se está haciendo ese recorrido. Y si, es cierto que en la mayoría de casos no hace falta saberlo, pero si lo que queréis es decirle al programa que haga algo, pasaros a lenguajes funcionales, los lenguajes imperativos están estaban para que el programador explique todo pasito a pasito.

o

#88 Ademas al no poner el 0 entre las llaves estas haciendolo implicito en vez de explicito, lo cual va en contra del zen de Python.

D

Me indigna que C++ esté todavía por la versión 14 y Chrome esté ya en la 36.

j

#77 Toda la razón, escribí sin pensar demasiado, tienes ADA, FORTRAN (aunque los programas escritos en él que conozco se están migrando a C++), y algún otro. Pero C/C++ siguen siendo los más comunes hoy en día, que yo sepa.

#78 Bueno, en principio no. Más bien glvalue y rvalue son los que lo cubren todo. Tienes el esquema en: http://i.stack.imgur.com/YKlod.png

#83 C que yo sepa no está por encima de C++ en velocidad de ejecución, realmente. Al menos si sabes qué estás haciendo, vamos. De hecho, C++ es (más o menos) un superconjunto de C, así que siempre puedes programar igual que lo harías en C Aún así, entre tener un objeto POD en C++ o tener un conjunto de variables y funciones en C no debería de haber diferencia de rendimiento, por ejemplo. Por otro lado, muchas de las cosas que tienen penalización de rendimiento (eg. funciones virtuales) no tienen alternativas más eficientes en C tampoco (un switch para elegir qué función llamar no es mejor que una vtable...). No sé, en cuanto a C/C++ yo opino lo que: http://programmers.stackexchange.com/questions/113295/when-to-use-c-over-c-and-c-over-c

oscargeek

#22 tienes que entenderlo.. c++ 14 revolucionará la programación.. miles de programadores se suicidan al dia porque tenian que usar una versión de c++ obsoleta.

D

Por fin le van a meter el Garbage Collector.

ailian

El estupendo escritorio KDE está escrito en C++, con eso lo digo todo.

D

#c-58" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/2238268/order/58">#58 Los lenguajes de programación son como las cervezas: hay gente que le gusta la de trigo, otros la de cebada, tostada, negra, roja,... Hay mucha variedad de cervezas, igual que de lenguajes de programación. Cuando escoges una cerveza favorita piensas "mmmm, qué gusto, qué fresquita, qué bien entra". Un día un colega te dice "¿por qué no pruebas una Chimay Azul?", al principio eres reticente, no quieres probar, luego das un sorbito y aceptas que está buena, pero que tu favorita es mejor. Al mes, no dejas de pedir Chimay Azul cuando tienes ocasión, y ni puto caso a tu antigua cerveza.

Con esto lo que te quiero decir es que te puede gustar php, C, C++, Java, C#, python, object pascal,... pero no hay que defenderlos a muerte, cada uno tiene sus más y sus menos, y a cada persona le puede gustar uno diferente. Lo jodido es dar con fanboys del tipo "Java es el mejor y C# es una puta mierda" o "C# es el mejor y java una puta mierda". También es importante saber para qué se usa cada uno, ¿te gustaría que la web de tu banco estuviese hecha en php?

Lo de C++14, me alegra que se siga evolucionando, al fin y al cabo es un lenguaje que seguirá vivo para sistemas de tiempo real o drivers, y que le hagan un lavado de cara siempre viene bien.

d

#75 y ADA?

T

#1 Imagino que tendrían que ser 28 + para que sea ++ 14, no?

ElPerroDeLosCinco

#26 El for-each está muy bien. Me refiero a esto:

for(int x=2;x

E

#33 Partiendo de que muchas de las cosas que pone no son coherentes... y ya no digamos eso de "And I can’t even point out any single damning thing, because the damage is so systemic." Para acabar haciendo un macrolistado de "defectos" como por ejemplo:

"It’s not even consistent: NULL < -1, and NULL == 0. Sorting is thus nondeterministic; it depends on the order in which the sort algorithm happens to compare elements." ¿Que? La ordenación utilizará un solo operador que permita obtener un conjunto ordenado, en ese ejemplo "

D

#25 Qué susto me has dado lol

#27 Eso malgastemos palabras reservadas para hacer estructuras más rígidas e inflexibles... No es tan difícil macho:

for ( inicio; condición; actualización )

Equivalente a:

inicio;
while ( condición )

D

#13 ^^^ PELIGRO. TROLL. Ignorar completamente para no alimentar su ego ^^^

D

He mirado las nuevas especificaciones en la Wikipedia y esta nueva versión es puqueña comparada con la anterior; afina algunas cosas de la C++11. Esperaba encontrar arrays variables, que ya están en la C99.

Penetrator

#25 Afortunadamente no. Y espero que no lo metan nunca.

D

#15 Por supuesto, todo el mundo sabe que menéame existe exclusivamente para perder horas y horas de supuesto trabajo remunerado

RojoVelasco

#30 Según parece, se cayeron del estandar y saldrán como nota técnica.

After reviewing national body comments to n3690, this library component was voted out from C++14 working paper into a separate Technical Specification. This container is not a part of the draft C++14 as of n3797

http://en.cppreference.com/w/cpp/container/dynarray

RojoVelasco

#39 Espero que sea una broma

RojoVelasco

#42 Y donde está la elegancia de montar todo ese pollo para aplicar op() a todos los miembros de v?

RojoVelasco

#45 Suponiendo que el bucle esté en una clase y que op() pertenezca a ella claro
Está usted haciendo deberes de más

RojoVelasco

#53 Quedan demasiadas cosas en el aire, depende muchísimo de lo que quieras construir, y realmente estábamos hablando de algo bastante simple lol

O

Joder, con lo bonitos y sencillos que son C y Fortran...

RojoVelasco

#70 Esta claro que C++ esta lleno de las llamadas rough corners, pero bueno, el estándar como vemos mejora con los años y al fin y al cabo no hay lenguaje perfecto. Con respecto a lo de que "me tiene enamorado" a pesar de ser una herramienta, es que es la que mas disfruto usando y, como en este mundillo de la informática lo mejor es buscarse un nicho en el que diferenciarse, mi elección es C++.

#61 Si solo fueran sistemas RT o drivers... La industria del videojuego se mueve en C++

#62 A mi me pones eso en un código y te dejo de hablar

RojoVelasco

#75 Pero con rvalues y lvalues sigues teniendo una partición completa de todos los tipos. Los demás son solo dervidados y que generalmente no tienes porque conocer, aun que como te pongas en serio con la semántica de movimiento la cosa se complica, claro.

O

#75 Hombre, en cuanto a rendimiento (entendido como velocidad de ejecución, que creo que es alo que terefieres en tu comentario) creo que C está bastante por encima de cualquier otro lenguaje (Fortran lo supera por poco en algunos casos)

RojoVelasco

#93 Estoy seguro de que D tiene muchas ventajas, pero en el sector que me muevo yo, ya cuesta que te dejen usar clang como compilador como para proponer un cambio de esa magnitud.

RojoVelasco

#102 Eso, perdona, estaba pensando en ese mismo diagrama cuando lo escribia

visualito

#5

Tu de la programación funcional nada

¿cierto?

eltxoa

Cuando era un chaval aprendí de forma autodidacta c y luego c++ de borland. Ahora estoy con python, y la sensación que me transmite, es la de cuanto tiempo perdí con el php. Es divertido y potente. Piensas, esta cosa loca funcionará, y funciona. Mola!.

'C' + '+' * 14

eltxoa

#37 Esto no es un nuevo modelo de avión. Esto es un nuevo motor de propulsión que puede revolucionar la industria aeroespacial. Es el lenguaje con el que se escribe el adn del software.

eltxoa

#46 Lo tienes en la noticia.

k

#6 a mi c++11 no me ha costado mucho, y c++14 es c++11 con mejoras

eltxoa

#56 No me seas cutre concadenando las cosas como en PHP:
'C%s' % ('+' * 11)


I'm very sorry. Supongo que tardaré en librarme de los vicios.

'C'.format('+'* 14)

Esta mola, pero es larga.

eltxoa

#58 No me interesa la discusión. Php hace bien lo que hace. Web sencillas en poco tiempo. Lo usaré cuando lo necesite. Pero php no esta bien construido. Es que hay páginas que coleccionan los disparates de php.
http://phpsadness.com/
http://www.phpwtf.org/

eltxoa

#90 Si se anuncia un nuevo motor que se basa en conceptos científicos avanzados que tú no puedas entender no deja de ser algo relevante. Tu limitaciones no valoran si algo es importante o no.

Si no eres capaz de valorar la importancia de un avance, tampoco eres capaz para valorar su irrelevancia.

ElPerroDeLosCinco

#12 Que va, si estoy de vacaciones estupendamente. Pero defender el for de C es de hacérselo mirar. Pero te lo digo de buen rollo, eh. No pretendía ofender, en serio.

D

#22 la noticia aunque irrelevante para mucha peña o corta en contenidos puede ser.. pero sabiendo lo importante q es c++ para nuestra civilizacion, es para portada si o si, aunque solo sea para ilustrar lo importante q es c++.

Laureano33

GO TO orientado a objetos

#4 Sólo una pregunta: ¿será muy difícil para que aprendiera con versiones anteriores de C++ adaptarse al formato 2014?

Katsumi

#23 Entonces tú crees que por ejemplo cada vez que haya un nuevo modelo de avión hay que sacarlo en portada, porque los aviones son muy importantes para nuestra civilización. Independientemente de si el nuevo avión no aporta ninguna novedad reseñable.

Katsumi

#40 Ok, pues que alguien explique qué diferencias hay entre esta versión y la anterior, diferencias que son las que van a revolucionarlo todo.

D

#37 aunque no es lo mismo lol te diria q aparatos como el 787 con nuevas geometrias de ala etc.. pues si, xq no, el saber no ocupa lugar.

x

#27 Prueba la de Ruby y veras...

Jakeukalane

#27 pero si ese for lo entiendo hasta yo... y eso que sólo hice un año y ahora lo máximo que hago son scripts en bash

o

#4 No me seas cutre concadenando las cosas como en PHP:
'C%s' % ('+' * 11)

Katsumi

#48 No, la noticia no dice nada sobre novedades de la versión.

Katsumi

#50 Pues eso digo yo Que si las nuevas versiones aportan algo destacable ok pero si no votar esto es puro frikismo.

meneandro

#27 Una definición de for más flexible y potente no existe. Si lo que quieres es algo que te detecte tipos y te itere automáticamente sobre los mismos no uses c++, usa python o algún otro lenguaje interpretado (aunque me da que ya con c++11 se ha mejorado mucho en ese aspecto y se puede hacer casi tan fácil como en python).

j

#26 A mi me gusta C++ (programo en él cada día tanto en el trabajo como en casa) peeeero cuanto más lo conozco menos "enamorado" me tiene

Básicamente porque es una herramienta (recordemos que usar C++ es un medio para programar algo, no un fin en sí mismo) cuyo manual de instrucciones tiene miles de recovecos y casos extraños. La mejor forma de comprobarlo es hacer este sencillo test: http://cppquiz.org/quiz/start o ver presetentaciones como "The Last Thing D Needs" de Scott Meyers: http://www.ustream.tv/recorded/47947981.

Cierto es que uno puede desenvolverse bastante bien conociendo un subconjunto relativamente pequeño de las normas, eso sí.

j

#74 Bueno, el estándar mejora pero yo creo que cada vez hay más cosas raras en lugar de menos. Mira los valores, por ejemplo. Antes había rvalues y lvalues. Ahora hay lvalues, xvalues, glvalues, rvalues, y prvalues. No es lo que yo llamaría simplificar

Pero sí, desde luego para programación de alto rendimiento (que es la que me gusta a mi) C++ no tiene mucha competencia (quizás C, pero la OOP facilita mucho mantener el código si se usa bien).

d

El mejor lenguaje es Lisp y los demas van copiando sus ventajas (lambdas por ejemplo, etc). Pero no tienen una de sus mejores características que es ser modificable a si mismo en tiempo de ejecución incluso (al código me refiero).

Katsumi

#87 No veo en ese enlace una lista de novedades que pueda leer una persona normal, algún motivo por el que quede ni medio claro que esta versión es importante. Volviendo a la analogía con los aviones que he usado por ahí arriba, si sale una noticia sobre un nuevo Airbus, es de esperar que la noticia cuente en lenguaje medianamente accesible qué tiene de nuevo e importante el avión, no que me enlace a unas especificaciones técnicas completamente incomprensibles para el humano medio. Y si no tiene ninguna novedad ni medio comprensible, no es noticia.

Tu comentario de la segunda frase es bastante despectivo, te tengo que votar negativo.

Katsumi

#92 Si el "motor que se basa en conceptos científicos avanzados" no aporta ninguna ventaja, no es noticia. Si lo hace, no debe ser tan difícil decir cuáles son las ventajas. No necesito conocer los conceptos científicos avanzados para que la noticia me cuente que estos conceptos permitirán al avión ir más rápido, o gastar menos combustible, o facilitar el mantenimiento, o se podrán usar en otras tecnologías, o lo que sea.

Pero aquí no hay nada, la noticia es que sale una nueva versión de un lenguaje y por algún motivo que desconozco simplemente nos tenemos que creer que eso es muy importante, sin que en ningún sitio se mencione una sola ventaja para el común de los mortales.

Ah, calla, "A proposal to rename shared_mutex to shared_timed_mutex" DIOS QUÉ IMPORTANTE

d

#102 si, ADA sigue siendo muy bueno y rápido. Se usa mucho para sistemas críticos y donde prima la seguridad también o la velocidad de respuesta (tiempo real). Pienso que es un digno rival de C o C++

c

#4 perdiste tiempo con PHP porque... ¿? (yo uso PHP y Python)

l

#32 para elegante esta:

std::for_each(v.begin(), v.end(), std::bind(&decltype(*this)::op, this, std::placeholders::_1));

l

#41 y no estoy bromeando

Baro

#39 es muy útil pero es muy muy fea e ilegible.

Baro

#45 #47
De hecho ¿no sería más versátil for(auto x : v) ?

Vale en cualquier contexto donde exista un v de cualquier clase con un begin() y end()1 que devuelvan algo que defina operator++, operator== y un operator* que devuelva cualquier cosa, y esté definida la función op que acepte lo que devuelva operator*. op podría ser un miembro de la clase actual (si aplica) o una función definida globalmente.

1

editado:
de hecho, aunque no estoy 100% seguro, también valdría si existen begin(decltype(v)) y end(decltype(v)), aunque nunca me he visto en esa situación, pero lo deduzco de los mensajes de error al compilar.

D

#22 Aquí creo que pasa lo mismo que en otras noticias por ejemplo como el tema del feminismo, aborto, religión. Las noticias llegan a portada no porque la noticia sea importante o relevante, llegan a portada porque hay gente a la que le apetece comentar la noticia.

A mi esta noticia no me parece relevante.

E

#27 Mmmm... a ver... pongamos...
for(;(i < j*10*sqrt(z)) && funcionPropia(z); j-= z*10, z--)
¿Como se pasa eso al for de Basic?

A mi el for de C también me costó asimilarlo y no me gusta mucho, pero bueno, hay que reconocer que es así por un motivo y que ese motivo es coherente con los objetivos del lenguaje.

E

#c-61" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/2238268/order/61">#61 "Con esto lo que te quiero decir es que te puede gustar php, C, C++, Java, C#, python, object pascal,... pero no hay que defenderlos a muerte"
Eso díselo a quien ha publicado un enlace echando pestes de un lenguaje y diciendo abiertamente que es un despropósito todo él ¿O te crees que yo estoy defendiendo a muerte algo? ¿He defendido yo a toda costa algo sobre otro algo?

Hay que joderse...

E

#65 No puedes hacer un sort con el operador ==, eso como principio, un sort con == en cualquier lenguaje es indeterminista. No se utilizan dos operadores distintos en la ordenación precisamente porque no tienen que cumplir las condiciones de un conjunto algebraico conocido y las ordenaciones tienen que ser flexibles permitiendo cambiar la comparación.

El problema es sencillo, se espera que el operador == se comporte de una forma, como no lo hace se inventa una circunstancia ad-hoc para criticar su comportamiento ¿Dice la documentación que == es transitivo? Entonces no lo uses si requieres un operador transitivo.
No veo forma en que un sort con el operador "

D

#68 No ves el problema porque no quieres verlo, yo no puedo hacer más. Simplemente no puedes tener un comparador que no cumpla la relación de orden. Al final eso te va a terminar dando problemas sí o sí.

E

#69 Vale, que relación de orden no cumple el comparador "

D

#61 También hay que ser algo objetivos, quizás te interese el comentario que escribí(#65), casi todos los lenguajes de programación tienen cosas absurdas, por suerte algunas solo aparecen cuando el programador utiliza malas prácticas. (como los finally+return de java)

No tiene ningún sentido que si tienes a < b, c = a luego puedas tener b > c eso es una putada enorme. Ahí vas a tener que el programador evite el problema, y encima hay mucha gente que no entiende ese problema (#68) ni aunque se lo expliques porque no tienen base para ello.

El problema de PHP es que las malas prácticas se hicieron al crear el lenguaje, no se trata de echar pestes sobre él, el problema es que realmente nunca fue un lenguaje. Nació como algo que quería conseguir cosas prácticas de forma fácil y a partir de ahí se extendió con el mismo propósito, sin buscar que fuera coherente, simplemente buscando que fuera práctico.

D

#71 Pues piénsalo, aunque no parece que se te de muy bien. lol

E

#73 Entiendo, no tienes argumentos y no conoces como se implementa un algoritmo de ordenación.

Es normal, en un principio y desde fuera, pensar que en una comparación se utilizan varios operadores. Es uno de esos casos en los que la intuición nos engaña.

También es ridículo criticar un lenguaje por algo que ocurre en muchos otros (como ya dije y no quisiste leer, en varios lenguajes tienes el mismo problema con el operador "==").

"No tiene ningún sentido que si tienes a < b, c = a luego puedas tener b > c eso es una putada enorme."
No es una putada, es una característica algebraica del conjunto de valores y operadores que utilizas. Es muy cuadrado pensar que porque se represente con un "==" y sea similar al "=" de las matemáticas del cole tiene que comportarse exactamente igual. Solo tienes que conocer las definiciones de "

D

#80 Tengo novia, si estás enamorado de mi desiste, por lo demás, ya te dije que puedes pensar lo que quieras. lol

E

#81 Aiss.. como cuesta aceptar un equívoco cuando te rebaten con argumentos...

Dale un saludo a tu novia de mi parte, Ella también sabrá que eres un cabezón

En serio, y sin acritud. Es que esperaba algún argumento por tu parte, o algún ejemplo que me hiciese replanteármelo.

D

#82 Sí, sabe que soy un cabezón pero así como tu igual me quiere, debe ser un don natural. lol Tómatelo como quieras, mis argumentos ya te los dí, tampoco pretendo perder más tiempo del que ya he perdido en alguien que me da la impresión de portarse como un troll.

Ya te lo dije, te falta base para entender lo que dije. Y hay mucho material en internet, si te interesa el tema investigalo. Si quieres ejemplos, ya te los dí, utiliza algoritmos de comparación distintos y mira que resultados salen. No hay mejor prueba.

R

#83 Pero no tan rápido como JavaScript

E

#84 No pretendo comportarme como un troll y me temo que te falta base a ti, te recomendaría documentarte algo sobre estructuras algebraicas (cuando son anillos, cuando son cuerpos, cuando creemos que son o deberían serlo pero resulta que no), ver las limitaciones que tiene el álgebra en informática a la hora de trasladarla desde la de las matemáticas tradicionales o incluso desde la lógica formal. Luego podrías mirar lo que es el tipado débil (aunque supongo que ya lo conoces) y analizar las diferencias de comportamiento en operadores que convierten tipos por defecto frente a los que tienen un tipado estricto.

Por poder, hasta puedes mirarte la implementación de ordenación que se usa en PHP (https://github.com/php/php-src/blob/master/Zend/zend_qsort.c) y nos dices cómo es indeterminista utilizando como comparador "

E

#89 Claro que PHP tiene una construcción "caprichosa" que no encaja con lo que nos tienen acostumbrados otros lenguajes. Es algo que ha surgido como "Personal Home Page", sirve para lo que sirve. Y alguna incoherencia también tiene (y otros muchos). No lo niego... pero es que... soltar que como el operador de igualdad no es transitivo las ordenaciones son no deterministas invalida tus argumentos técnicos, implica no saber implementar un algoritmo de ordenación... lees eso y, si entiendes, dejas de leer.

Y luego llega 65, lo reafirma y se lleva positivos... uno tuyo por cierto. Pues no, la ordenación es determinista y no depende del orden inicial si el operador establece una relación de orden estricto, y el operador de orden no es "==" si no "".

Como digo, PHP tendrá muchos defectos (encontrarás páginas similares sobre casi cualquier lenguaje), pero de lo que ha puesto ese tipo en concreto en ese enlace no se puede concluir gran cosa.

Por ejemplo, que "funciones" internas del lenguaje no estén definidas como funciones si me parece un gran defecto, pero corresponde a la implementación y diseño del intérprete más que al lenguaje en si.

1 2