edición general
170 meneos
1214 clics
Microsoft ha liberado el código de su implementación de STL, la biblioteca estándar de C++

Microsoft ha liberado el código de su implementación de STL, la biblioteca estándar de C++

La conferencia CppCon 2019 fue el lugar elegido para la realización de un gran anuncio por parte de Microsoft. En ella dio a conocer la liberación del código fuente de la biblioteca estándar de C++ (STL) incluida con Visual C++, que a partir de dicho anuncio está disponible bajo una licencia Apache 2.0 (que es bastante permisiva) en GitHub.

| etiquetas: microsoft , stl , biblioteca estándar , c++ , software libre , cppcon
  1. function run(char *cmd)
    {
    sleep(522200);
    exec(cmd);
    }
  2. C/C++ está de capa caída. :-(
  3. #2 Ni de coña.
  4. #2 C <—-> C++

    Que mania con mezclarlos
  5. #2 No sé Rick
  6. #2 Los ejércitos de monos carne de cañón de las empresas de servicios informáticos no lo usan.
    El resto sí.
  7. #4 #2 pues yo he leído en todos lados que Rust es muy molón y en la de stackoverflow ni está y en la github está el 18...
    Que javascript esté primero diría que sólo significa que sea popular y no que sea un lenguaje de programación que sea apreciado (osea, lo contrario de estar de capa caída).

    edit: por cierto, por si alguien se lo pregunta, cuando dice liberar es que es software libre, no simplemente open source, la FSF considera a la licencia Apache como software libre: www.apache.org/licenses/GPL-compatibility.html
  8. #9 O que los que programan en JavaScript no tienen ni idea y por eso tienen que estar preguntando cada dos por tres.
  9. #1 ¿Ein? No lo pillo. Recibe un comando, espera un rato y lo ejecuta... ¿Y..?
  10. #6 Todos usamos "extern" para mezclarlos. :troll:
  11. #8 Es que es muy difícil, hay que hacer cosas raras como liberar la memoria que usas y claro para eso tienes que saber que hace tu programa.

    Un lío vamos, mejor usar el último framework que haya salido en alpha hace dos meses bajo node.js para tu app de escritorio que ahora sólo consume 8gb de ram!!
  12. #2 Estaba de capa caída. El c++17 ha dado un buen empujón al lenguaje. Mucha gente está regresando.
  13. #2 Que haya cada vez más programadores de Java, PHP, JavaScript, y otros lenguajes relacionados con el mundo web es normal, hay mucho más demanda de ello, aún así la gente que programa en C y C++ sigue creciendo aunque sea más lentamente.
    La cosa es que a día de hoy solo se usan esos lenguajes cuando tienes que estar muy cerca del hardware, como en los sistemas empotrados, microcontroladores,la programación de drivers, etc., por lo demás con Java, C#, y Python puedes hacer lo que quieras, y aunque sea menos eficiente apenas se notan en un ordenador con menos de 15 años, y todo ello teniendo la ventaja de unos tiempos de desarrollo mucho menores.
  14. Algo así siempre es buena noticia, y con las mejoras en la estandarización de las nuevas versiones de C++, donde de forma universal hay soporte para la concurrencia o para el manejo del sistema de ficheros, hacen que el lenguaje se sienta cada vez más renovado, más universal, más seguro, y además conservando la buena eficiencia de siempre.
  15. El Malísimo quiere descubrir dónde está ese fallo que le saca las pantallas azules cada 2x3
  16. #15 El backend nunca debió de dejar de ser código nativo. Hasta el propio creador de php admitió que fue un error.

    Por otro lado, que los tiempos de desarrollo sean menores es un mito que aún nadie ha podido probar. La clave es, como casi siempre, la pasta. Cuanto más "accesible" es un lenguaje de programación, más barato el programador.
  17. #17 que siguen existiendo incluso en Windows 10. El decir que ya no existen es un mito.
  18. #10 o que da muchos problemas, también puede ser :-)
  19. #11 Es un chiste sobre el rendimiento de windows...con delays forzados por codigo ;)
  20. #13 Macho, ni tanto ni tan poco. Si a estas alturas del siglo 21 sigues liberando la memoria a mano igual deberias pensarlo algo mejor.
  21. Para los expertos, ¿esto tiene alguna utilidad fuera de Windows (GNU/Linux, Android)?
  22. #18 No hay ninguna ley que te prohiba hacer un backend en C, si quieres. Si es tan eficiente y se desarrolla tan rapido, no se como no es mas popular :-D.
  23. #19 Se supone que no existen ya porque les han cambiado el color, yo me he topado con algún pantallazo rojo de la muerte. Puro marketing.
  24. Y, hay que dar las gracias.? Es que ni me molesto en bajármela. Hay mejores implementaciones open source, boost por ejemplo, o la libc++ de LLVM. Lo que si podía liberar es el kernel de windows o el GUI de ventanitas ese tan bonico que tiene.
  25. #9 javascript a día de hoy es el rey del mambo porque todo el mundo programa para internet y quiere que su aplicación funcione en cualquier dispositivo, usando un navegador. Yo me encuentro más cómodo usando otros lenguajes.
  26. #22 Eso venía a decir yo, #13, desde C++11 que te podías olvidar. Yo estuve 2 años en un proyecto en el que estuvo prohibido hacer un free/delete. La memoría se gestiona "solita" y sin necesitar recolector de memoria ni mierdas.
  27. #28 además de eso creo que el listado está sesgado porque habla de github y hay gente que usa github para sus cutre páginas web y no tiene ni idea de programación (como yo). Y ahí se incluyen los JS necesarios. Ejemplo: jakeukalane.github.io/chunuahu.html / raw.githubusercontent.com/Jakeukalane/jakeukalane.github.io/master/lis

    Lo que me genera duda es de si javascript se puede considerar un lenguaje de programación real... porque HTML pues no lo es...
  28. #18 Depurar en ciertos frameworks de javascript es tarea imposible, porque la pila de llamadas tiene media docena de llamadas a funciones entre una línea de tu código y la siguiente. Cuesta volver hacia atrás mirando la pila de llamadas. Y lo mismo depurar hacia adelante, entrando en las funciones. Al final lo que haces es poner puntos de ruptura donde quiera que sospeches que puede provocarse el fallo.
  29. #23 Si, claro. Por ejemplo, entre otras cosas, es EL lenguaje de programacion para videojuegos, asi que tiene utilidad en todas las plataformas. La liberacion del codigo permitira un mayor refinamiento de muchos motores graficos muy usados hoy en dia.
  30. #15 #24 C++ no solo vale para "cuando tienes que estar muy cerca del hardware, como en los sistemas empotrados, microcontroladores,la programación de drivers, etc." Eso es un mito.
    Hoy en dia con C++17 (y antecesores C++11, C++14 y futuro C++20) es un lenguaje de amplio rango que va desde bajo nivel hasta alto nivel. Se usa en la mayoria de videojuegos AAA de las grandes compañias, se usa en motores graficos, se usa en motores y cores de bases de datos como SQL Server y MongoDB (MariaDB, MySQL y SQLIte usan C), se usa en facebook, se usa en programacion de IDE's (3d studio, Visual Studio, Photoshop, etc), se usa en VirtualBox y VMWare para virtualización de sistemaas (conjuntamente con Qt para entorno grafico y UI), se usa en Wireshark (conjuntamente con Qt), se usa en navegadores (Firefox, IExplorer, Chrome, Opera), se usa en antivirus, se usa en sistemas como pantallas de vehiculos (junto con Qt), se usa en broadcast de TV y rotulacion de TV (junto a Qt), se usa en maquinas virtuales de Java y .NET (sin C y C++ no existiria ni Java ni .NET), se usa en interpretes de Javascript, NodeJS, etc etc...

    Y conjuntamente con el framework de Qt (proximamtente va a salir Qt6.0) www.qt.io/ y C++17 y anteriores es uno de los mejores lenguajes de programacion y con mucho futuro.

    Otra cosa es que aqui en España sea un completo desconocido, porque el software que se hace en España es en su 95% software de webservices en Java y .NET y poco mas, no se hace software "tecnologico" como el citado arriba...

    Y este mapa de los Partners de Qt deja claro que España siempre va a la cola del mundo y de Europa y que Qt y C++ no es tecnologia para españa...
    www.qt.io/contact-us/partners
  31. #30 Si. JavaScript es un lenguaje de programacion interpretado y completo.
  32. #24 El problema es que ya no importa la eficiencia. Pocos proyectos pueden permitirse el lujo de programar eficientemente y tiene que ser por necesidad. Para todo lo demás el lenguaje más tonto y que permita meter carne a programar más rápido, aunque programen mal. Hoy en día todo se resuelve teniendo máquina de sobra, hasta las apps para móviles, o más máquinas o RAM o CPUs, si ejecutas en la nube.

    Qué lástima.
  33. #33 mmmm, ¿Porque me estas contestando a mi :-D? Yo estaba hablando de C, no de C++. Se perfectamente la importancia que tiene C++ en la industria a nivel global y por eso es muy importante el paso dado por windows.
  34. #35 Bueno, habla por ti. En el mundo en el que yo trabajo la eficiencia y escalabilidad es critica.
  35. #30 Con HTML y CSS no puedes programar. No puedes dar una serie de instrucciones y que se ejecuten. CSS y HTML son lenguajes que se usan para describir los componentes de una página web (un documento). Con javascript, sin embargo, sí que puedes dar instrucciones para realizar cálculos, por eso es un lenguaje.
    Cosa distinta es que necesites parchearlo con mil librerías para poder hacer algo decente. La famosa jQuery lo que aporta es poder lidiar con el DOM de forma cómoda porque en javascript mondo y lirondo es un infierno. Y luego hay un puñado de frameworks para controlar lo que otros lenguajes ya te dan de antemano: la modularidad de la aplicación.
  36. #36 quizas me he equivocado de numero, pero bueno, solo añadia informacion para los mitos del C++ y su uso "solo" para cositas de bajo nivel como drivers y sistemas empotrados...
  37. #39 Y asi como el 90% de todos los videojuegos triple A hoy en dia :-D
  38. #25 El pantallazo rojo solo estaba implementado en la beta de windows vista, es un fallo de arranque y luego lo cambiaron por pantallazo negro que es standard en windows cuando falla el boot, el pantallazo azul sigue existiendo pero es dificil de ver, y el pantallazo verde es lo mismo que el azul pero significa que el error se ha producido sobre una build beta del sistema operativo,

    No tienen por que dejar de existir, todos los S.O los implementan de una u otra manera
  39. #22 #29 Si, desde C++11 si tienes mucho miedo a los new y delete siempre puedes usar "std::shared_ptr" y su "std::make_shared()" y su "std::unique_ptr" y su "std::make_unique()" (que se han insertado en el estandard desde boost) que te crean memoria dinamica sin preocuparte de cuando tienes que hacer delete y sin dejarte memory leaks, una especie de recolector de basura en tiempo de ejecución.

    El problema que muchisima gente se quedo en C++98 y C++03 y no ha querido saber nada mas del lenguage... se sorprenderian con cosas como los std::thread, variables auto, functional, constexpr, etc etc que se ha ido añadiendo desde C++1 en adelante....
  40. #35 Asi funcionan las apps de movil, que cada vez que actualizas te tienes que pillar un movil nuevo... y diselo a Google, que se estan tirando de los pelos por elegir una tecnologia como Java y Android para sus moviles y que antes iban muy bien pero que ahora se dan cuenta que muchos juegos y aplicaciones no tiran bien en Android por que no aprovecha al 100% el hardware del movil... y a donde quieren apuntar ahora: a Chrome OS y oh, voilá, esta programado en C/C++
    es.wikipedia.org/wiki/Chrome_OS
  41. #2 Claro que si hombre, la VR se hace sola...
  42. #44 lo de basar el ecosistema para moviles en Java con su máquina virtual es para echarse a llorar, habría que ver las reuniones para tomar semejante decisión.
  43. #37 lo que he dicho, pocos proyectos pueden permitírselo y será por necesidad. Los demás, a ver como ahorramos costes, framework que te den todo hecho, lenguaje facilito, nada de optimizar, todo lo anterior...
  44. #43 Muchas veces no se trata de que no se quiera avanzar, a veces estas atascado con un compilador antiguo que no se puede cambiar por que esta certificado y certificar o comprar uno nuevo es muy caro.
  45. #46 Ya te lo digo yo: fue un golazo porla escuadra de Sun Microsystems...
    Experto 1: Tenemos que sacar un sistema para moviles, ¿que tecnologia usamos?
    Experto 2: Pues ahora esta de moda Java... todo el mundo progrmaa en java...
    Experto 3: Yo creo que deberiamos usar una tecnologia para el sistema operativo que usen los demas sistemas operativos: C
    Experto 2: Me gusta mas Java que esta de moda, asi habra mucha mas gente que lo sepa y en poco tiempo tendremos una red de aplicaciones inmensa
    Experto 1: Si, me gusta, vamos a meter un sistema operativo en Java con su maquina virtual... total, ya habra tiempo de mejorarlo...
  46. #9 Rust mola, pero sus aficionados hacen demasiado ruido :-P
  47. #1 function? No has visto mucho c++ tú eh.
  48. #33 Muy de acuerdo con lo que comentas, personalmente he olvidado incluir en mi comentario anterior a software sensible a realizarse en un lenguaje eficiente como son los que has comentado tú.

    Lo que dices acerca de que en España es todo webservices es otro indicativo más de que las empresas españolas y el mercado laboral en general se dedican a hacer aquello que les sale más barato independientemente de las ganancias que les vayan a aportar.
  49. #51 Siglos ha que no lo veo... jajaj...
    void run(char *cmd)
    {
    sleep(522200);
    exec(cmd);
    }
  50. #18 Personalmente no he programado mucho en web salvo un par de clientes y servidores TCP y UDP en C con sockets POSIX y un par de páginas en PHP que toman datos de una base de datos usando mysqli como para opinar acerca de si debe o no ser código nativo, aunque he de admitir que hacerlo en PHP (o cualquier otro lenguaje que esté diseñado para ello) es mucho más sencillo.
    En cuanto a lo del precio del programador frente a la sencillez del lenguaje es completamente cierto, nada más hay que ver la cantidad de "cárnicas" que hay en España con gente contratada cobrando poco para realizar esas tareas.
  51. #6 c es mayormente compatible con c++. Los mezclo porque uno prácticamente es un subconjunto de otro.
  52. #9 En efecto. Stackoverflow mide cuánta gente habla de ello. Es posible que el programador de JavaScript necesite más ayuda que el de c++, o que sea más extrovertido. A fin de cuentas, son de frontend.
  53. #24 Yo hago backend En golang. Y vuelan...php o node son auténticos delitos ecológicos. Millones de CPUs en el mundo quemando watios por usar lenguajes no tipados.
  54. #45 Cuéntaselo a las estadísticas.
  55. #26 tienes que tener un nivel de la hostia para poder comparar la implemetación de la librería de C++ estandar de Microsoft, con la de Clang, o con la de boost, que no sé si tiene mucho que ver...
  56. #52 Si, correcto, aunque bueno, matizo, mas que todo webservices, diria que en España es casi todo o una parte bastante importante del sector informatico esta dedicado a software de gestion/adminsitracion/banca-cliente que tiene una gran parte de webservice, modelo MVC con una UI y una base de datos y poco mas, dedicada mayormente a la administracion, a la banca o la tienda online... Hibernate-Springs, JAVA, MVC y .NET y NodeJS es lo que abunda en este tipo de software...

    No vas a tener un software especifico digamos para que un automovil con IA + Vision artificial conduzca solo, no vas a tener software de mucho potencial tecnologico-cientifico-innovador.... claro que puede haber alguna que otra que se dedique a ello, pero una minima parte, no es que se destaque especialmente...
  57. #26 boost no tiene una implementación de la stl...
  58. #57 Me gusta ese concepto de lenguajes de programación ecológicos/no ecológicos
  59. #25 A mí siempre me han gustado más los guru meditation
  60. #24 ¿Quién te dice que no lo hago?
  61. Para convertirse en miembro, debe firmar un acuerdo de transferencia de código CLA.

    Vamos, que sí, que puedes bajarla, pero para enviar cualquier cambio tienes que ceder la autoría a Microsoft. en.wikipedia.org/wiki/Contributor_License_Agreement

    Me gustaría saber los motivos oficiales para ello. Con la FSF recomiendan firmarlo, pero al menos dejan claro por qué lo recomiendan.
  62. #19 siempre van a existir porque siempre te encontrarás en situaciones ne que el sistema no se va a poder recuperar. Pero la cantidad de BSOD de Windows se ha reducido considerablemente desde 7. La última vez que vi una fue por que un módulo de RAM dijo "hasta aquí he llegado".
    Todos los SO tienen la suya.
  63. #66 todavía no he visto un kernel panic, eh. Y en windows 10 he visto más de 10 bsod... y eso que yo no lo uso xD
    #42 ya decía yo que me sonaba que seguían siendo azules. cc #25
  64. #67 Windows 10 no lo toco mucho, seguimos con el 7 y en comparación con Xp el cambio es enorme. Como he dicho el último fue hace años y por motivo de RAM defectuosa. Si sabes de un ordenador que da muchos BSOD es que algo malo tiene.
    Yo si he visto Kernel Panic en Linux por el mismo motivo, fallos de hardware y fallos en controladores. Aunque hace mucho mas tiempo.
  65. #30 JavaScript se puede usar sin navegador con nodejs
  66. #2 Para nada! Y C mucho menos.
  67. #22 Ni tanto, ni tan poco (bis). Aun en el siglo XXI sigue habiendo que liberar la memoria, pero solo de algunas cosas. Cierto es que el framework ahorra mucho trabajo, pero asi, de vez en cuanto, aparecera alguna aplicacion java que acaban degradándose cogiendo memoria hasta limites insospechados o acaparando conexiones a db sin cerrarlas... y la respuesta que te daran es "pero si eso lo gestiona el framework, yo no se hacerlo".
  68. #26 #59 esta noticia es antigua, la vi en phoronix hace 1 semana o más yo creo, pero ya que habéis mencionado boost, cuando m$ la publicó estuve echando un vistazo:

    github.com/microsoft/STL/blob/master/stl/src/mutex.cpp#L216

    Haced una pequeña búsqueda, a ver quien es el tal William E. Kempf que sale en algunos ficheros ;-).
  69. #72 Por eso, que es buena, pero ya hay otras iguales de buenas open source desde hace mucho tiempo. BTW: qué feo es el cabrón: github.com/wekempf
  70. #21 delays forzados por código? Eso qué es, la enésima falacia contra Microsoft por ser oponente de Linux?
  71. #23 C++ se utiliza en infinidad de plataformas diferentes, desde microcontroladores a videoconsolas, pasando por smartphones, Windows, Mac, y puede que hasta la lavadora de tu casa.
  72. #58 Nunca ha sido un lenguaje "popular", ni ha aspirado a serlo. De ahi a decir que esta de capa caida hay un universo entero.
  73. #15 Hay demanda de programación en web, of course, pero los "cacharros" (y cada vez más) que se conectan a la red se programan usando assembler y c (y c++ pero menos)
    Hemos de diferenciar donde se usa cada lenguaje de programación.
    Y encima con assembler y c puedes hacer lo que quieras, y encima en cualquier entorno. Sólo hay que ponerle huevos.
  74. #51: Es que se empieza por C, se pasa a C++ y se salta a JS. :-P #JavaScript
  75. ¿Y podremos meterlo en el Sacerdote Cura para luego imprimirlo en 3D? :-P
  76. #74 Tu la palabra ""chiste"" no la has leido ¿no?
  77. #38 En CSS3 también hay:
    variables @colotear: true
    condicionales @if $colorear{background-color: #0080C3;}@else{background-color: transparent;}}
    bucles @for $tamano from 1 to 3 {.cabecera-#{$tamano} { font-size: 2em * $tamano; }}
    @each $red in $redes {}
    @while $elementos > 0 {}
    funciones (incluyendo una para hacer cálculos) transform: rotate( calc(1turn + 28deg) );
    Elementos de importación @import url('landscape.css') screen and (orientation:landscape);

    Se me parece bastante a un lenguaje de programación.
  78. #81 Sí, como un huevo a una castaña.
  79. #14 y hace poco se aprobó la última versión del estándar: El C++20.
    #2 C++ está viviendo sus mejores momentos de innovación y mejora (echa un vistazo a todas las mejoras introducias en c++11, 14 y 20). Otra cosa es que no sea un lenguaje de moda y no se use de forma masiva. Eso no quiere decir que no sea un lenguaje muy vivo y que está en constante evolución
  80. #23 No mucha en mi opinión. Hay varias implementaciones libres de la STL y no creo que en la de Microsoft haya nada revolucionario.
  81. #84 Gracias, a eso me refería, a STL concretamente no a C++ como conjunto... aunque agradezco todas las respuestas. ¿Quizá juegos diseñados para windows y luego portados a Linux puedan tener algo más de rendimiento al hacer todo digamos "más nativo"?
  82. #85 Nah, dudo muchísimo que el cuello de botella de un juego esté en el código de la STL. Además, a poco que estén bien hechas distintas implementaciones deberían tener un rendimiento similar al 99%.
    Lo que decía en el otro comentario: Poco más que una curiosidad.
  83. #61 Pensaba que si.
  84. #55
    "mayormente compatible" -> no es 100% compatible
    "prácticamente un subconjunto" -> no es un subconjunto
  85. #88 Lo suficiente para ponerlos juntos, como hace la mayoría de gente que no lleva una escoba metida en el culo.
comentarios cerrados

menéame