Hace 1 año | Por anje a genbeta.com
Publicado hace 1 año por anje a genbeta.com

Hay que recordar que la de Redmond reveló en 2019 que el 70% de sus parches en los 12 años anteriores eran correcciones de errores de seguridad de memoria, debido en gran medida a que Windows está escrito principalmente en C y C++. El equipo de Chrome de Google pesó con sus propios hallazgos en 2020, revelando que el 70% de todos los errores de seguridad graves en la base de código de Chrome eran errores de gestión de memoria y seguridad, que está escrito principalmente en C++.

satchafunkilus

#1 Ostia, venia a decir lo mismo lol

c

#1 Estos de Microsoft culpando al lenguaje de sus chapuzas. No se podía esperar más de ellos.

c

#4 Sin mencionar las maravillas del .NET...

pkreuzt

#6 El .NET como lenguaje no es tan malo. Es un competidor de Java y es muy portable, así que tiene sus ventajas. Dicho esto, donde esté el código nativo. . .

dark_soul

Cuanto dice que paga por programar con Rust?

coderspirit

#8 Mucho, a mi me llegan ofertas cada semana por encima de 150.000$/año. El problema: el 80% de ellas están relacionadas con Blockchain.

coderspirit

#7 .NET no es un lenguaje, es un runtime + "ecosistema". Pero dejando eso de lado (asumiré que simplificabas), tiene muchos otros problemas, como que su "fundación" no es realmente independiente de Microsoft, y cada dos por tres traicionan a sus desarrolladores, tomando decisiones que los fuerzan a usar las herramientas de Microsoft, en detrimento de otras opciones abiertas y compatibles.

https://isdotnetopen.com/

dark_soul

#9 que problema moral... Con mucho que no me echarán en dos meses serían unos 24k menos impuestos

pkreuzt

#11 Me refería al argumento técnico. Comparado con otros sistemas del estilo, no está tan mal. Yo por lo menos lo prefiero por encima de Java.

D

#1 Microsoft es probablemente la empresa con más experiencia en software de sistema, así que sabe de lo que habla.

pkreuzt

#14 Pues si. La han cagado tantas veces que tienen un montón de experiencia.

coderspirit

#15 La han cagado como empresa, pero eso no significa que todos sus desarrolladores destacados sean culpables de ello.

pkreuzt

#18 Las decisiones en una empresa de estas las toman habitualmente los directivos, como el aquí mentado. Nadie ha responsabilizado a los desarrolladores.

dark_soul

#17 chico, que solo es un puesto de programador. Tecleas, cobras y te tomas unas copas. Dudo que el minero que se dedica a sacar uranio piense que se usan para hacer bombas. Tiene otros usos

pkreuzt

#21 Tengo la sana costumbre de desconfiar de Microsoft, llámame loco lol

coderspirit

#19 Pero justo dices:
> La han cagado tantas veces que tienen un montón de experiencia.

refiriendote a su experiencia en "software de sistema" (del comentario anterior), no soy yo quien omite el contexto.

pkreuzt

#23 La "experiencia" son las decisiones directivas acumuladas. El apostar por cosas que luego no han funcionado. Los desarrolladores harán lo que les manden, no son los que deciden el rumbo.

dark_soul

#25 eres camarero o algo así?

a

Aprovecho el hilo. ¿Hay algun libro bien actualizado sobre Rust?

s

#10 Lo que no sé por qué los ponen juntos, supongo que será porque son los mas usados en sistemas operativos, porque C y C++ son dos mundos diferentes con distinta gente detrás.

r

#3 Genbeta forma parte de una agrupación de blogs.
Probablemente estén obligados a escribir un numero de artículos diarios.
La calidad de los artículos no es una prioridad, solo la cantidad.

Es una peste que afecta a cada vez más blogs y webs de noticias.

R

#29 este tutorial de youtube es buenísimo

c

#29 +1, interesa. No sé hasta qué punto rust está evolucionando muy rápido ahora mismo como para que un libro se quede desfasado rápido, pero es que prefiero el papel, la verdad.

pawer13

#28 venía a decir esto, es el CTO y como desarrollador fue el que descubrió el rootkit de Sony que fue todo un escándalo en su momento. En ese momento tenía su propia empresa donde había creado multitud de herramientas para facilitar el mantenimiento de Windows y es considerado un programador talentoso... en C y C++.
Su empresa fue adquirida por MS y él ha escalado hasta ser CTO de MS.

pawer13

#3 errores en la gestión de seguridad! =errores de seguridad

d

Para nuevos proyectos se puede usar C++11 en adelante, que ya tiene punteros inteligentes y no hay que andar alocando y liberando memoria cada 2x3.

El palillero de Mocosoft no se entera de nada, como si los errores de "seguridad" fueran un problema del lenguaje; será del pardillo que lo ha hecho, que no tendrá ni idea de nada.

Suker

#25 Enhorabuena. Y gracias.

x

#10 ¡ Y los cuchillos cortan !

h

#11 hoy en día se puede desarrollar en .NET en Linux o Mac sin problemas. Te lo digo yo que lo hago.

ChukNorris

#25 Como dijo un famoso filántropo, dedicate a lo que más rentable te salga para ganar dinero, luego ya limpiarás tu conciencia donando una parte.

h

#30 porque son los más usados ahora mismo

ur_quan_master

#7 si competidor significa copia con mil añadidos que lo hacen peor

h

#24 estás bastante equivocado. Microsoft tiene bastantes desarrolladores "cracks" (para eso les pagan pastizales) con poder suficiente para tomar decisiones de este tipo.

Por ejemplo, vscode está hecho en TS/nodejs porque les salió del nardo.

D

Con el C++ empece yo a programar en serio, decían que algunos bucles podían llegar a quemar el procesador... Leyenda urbana, de ser cierto yo hubiera quemado varias maquinas

coderspirit

#39 En ningún momento he negado eso.

m

¿Y no sería mejor corregir los fallos de C o habilitarlo para poder programar de forma segura, en vez de inventar lenguajes nuevos?

h

#25 danina a todas luces?

Muchos la consideramos beneficiosa para la humanidad, aunque con aspectos negativos, como todo.

Sí, tu trabajo también tiene aspectos negativos.

D

#10 sera un nido infecto el código realizado en esos lenguajes. Que son los más usados desde hace 50 años y por eso obviamente se decubren más agujeros de seguridad en C que en ADA que no lo usa ni Perry. Además programar en C o C++ requiere una disciplina mayor que en otros lenguajes, donde se facilitan algunas cosas.

h

#36 el palillero dice...

Ese muchacho te da mil vueltas en todo. Mira su currículum.

Por otro lado, lo de los punteros inteligentes está muy buen, pero yo quiero un lenguaje donde se lean procesos de negocio al mirar el código, no que tipo de puntero se usa en cada línea.

Paladio

¿cual es el mejor libro para aprender rust?

coderspirit

#40 Lo del "effective altruism" es una forma muy, muy burda de utilitarismo (que no tiene en cuenta aspectos básicos como el típico "factor de descuento" que hay que aplicar a retornos futuros). No me voy a poner a desmontarlo aquí porque es mucho trabajo para mi, que no me dedico a la filosofía; pero no es difícil encontrar muy buenas explicaciones al respecto.

h

#46 podrías ser más concreto con esto, entonces?

tomando decisiones que los fuerzan a usar las herramientas de Microsoft,

coderspirit

#30 Son muy distintos, pero tienen conexiones históricas, y los dos se usan para hacer software de "alto rendimiento". Además de que muchas herramientas están diseñadas para trabajar con los dos a la vez.

ccguy

#4 tienes un ejemplo de este milenio?

ChukNorris

#52 No te molestes en desmontar nada, la gracia de "famoso filántropo" es porque uno de sus mayores impulsores (y captadores de ese tipo de donaciones) es Bill Gates.

D

#43 muy bien explicado.

UnDousTres

#15 Pues hora lo estan petando en el cloud no?

F

#30 Porque ambos comparten el mismo problema. La gestión de la memoria. Que justamente es de lo que se queja MS, los de Chrome y todo el mundo

ccguy

#36 ¿no te parece útil que sea el compilador el que te garantice que el código está libre de bugs de las clases más peligrosas?

ChukNorris

#54 y ya que estás, tienes enamorado a medio meneame por tu sueldo y trabajo, deberías hacer un preguntame o algo similar cuando tengas tiempo para cotillear como has llegado ahí y contarnos que problemas éticos y morales te has encontrado por el camino.

Magankie

#4 si profundizas un poco más, Microsoft sabe bien lo que se hace. Creo que han aprendido de los errores del pasado. Ahora, no sé si es algo bueno o malo...

ccguy

#51 rust book, que es gratis.

La documentación de rust es excelente.

coderspirit

#49 No hablo (ni yo ni el resto de proponentes de Rust, o críticos de C/C++) de cantidades absolutas, sino de proporciones. Proporcionalmente, el código en C y C++ contiene muchos más errores graves que el código escrito en Ada, o Haskell, o Rust (y lo mismo pasa si comparamos JavaScript con TypeScript, precisamente porque TS aplica reglas más estrictas).

No se trata sólo de tener "mal código" o "malos programadores". Es demasiado fácil cometer errores sutiles (pero graves) en C y C++. Esto no es tampoco una opinión de 4 academicistas, ni de puristas. Se ha demostrado por activa y por pasiva que había que encontrar mejores soluciones que lo que C y C++ nos ofrecían.

Y son los más usados por motivos históricos, no porque fueran especialmente mejores que otras opciones, el concepto de "accidente histórico" existe por algo. En el caso de las tecnologías también tenemos el concepto de evolución dependiente del camino "path dependent" (es decir, que ciertas decisiones no se tomaron por ser las "mejores", sino por los pasos dados previamente).

coderspirit

#43 Perdona si desconfío de tus conocimientos en programación de sistemas a bajo nivel, o de seguridad en sistemas críticos.

pkreuzt

#55 Windows Vista. Windows 8. Zune. Toda la cosa de móviles. Cortana. Algunos ya citan el Win11 (en esto no estoy de acuerdo. . . porque es que es lo mismo que 10).

#58 Su nube va mayormente con Linux. Obvio. Hasta tienen su propia distro para usar en Azure.

coderspirit

#c-53" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3726785/order/53">#53 He enlazado una página bastante interesante, más arriba en el hilo, donde se exponen casos bastante salvajes de actos deshonestos por parte de la .Net Foundation. Esa página no es ni mucho menos exhaustiva.

Admito que no toco C# más allá de 4 chorradas cuando cacharreo con Godot para mis experimentos personales, pero uno de mis motivaciones para evitarlo ha sido su historia llena de baches a la hora de soportar sistemas como Linux (primero con Mono, que siempre iba por detrás y luego fue absorbido), o las dificultades para acceder a buenas herramientas de debugging que fueran libres (de hecho uno de los casos que más me escandalizó estaba relacionado precisamente con esto último).

M

#16 No entiendo nada pero te voto positivo porque me da la sensación de que tienes razón. clap

ccguy

#66 ¿esos son ejemplos de qué, cosas que no funcionaron? Todas las empresas tienen montones. No sé a donde quieres llegar.

ccguy

#58 En cloud y en un montón de cosas. Desde que se fue Ballmer la empresa va como un tiro.

h

#67 ya, bueno, estoy de acuerdo, el . NET antiguo no lo hubiera tocado ni con un palo.

Pero llevan muchos años ya dando pasos de gigante en dirección al openness (como se diría esto en castellano?) y, sinceramente, no veo eso de que te fuercen a usar herramientas de Microsoft.

Es todo lo contrario, ahora puedes usar hasta docker fácilmente.

B

C prevalecerá. Como siempre.

oraculus_reloaded

#47 Pues si, esto parece ya la Torre de Babel.

t

#36 Alocando dice el palillero.

m

#73: Es que es siempre lo mismo:

"Eh, mirad, he inventado aún otro lenguaje nuevo que soluciona los problemas que yo notaba en otros, pero que deja otros problemas pendientes de arreglar para que otros puedan inventar un lenguaje más"

Al final se atomiza todo y es peor. Si el problema de C es que puedes salirte del vector, implementa una función de comprobación y úsala SIEMPRE, incluso podría haber una biblioteca estándar para eso. Si el problema es la conversión de tipos, que implementen una función en el compilador que obligue a usarla siempre y si no coinciden, que de error, aunque la conversión sea tribal trivial.

coderspirit

#61 Supongo que podría responder preguntas, pero sin ser famosillo ni haber expuesto qué hago en realidad, no sé si la gente tiene material suficiente como para poder hacer demasiadas preguntas.

Ojo, se gana bien, pero no es el paraíso, o no para todos.

Disclaimer: lo que sigue es una simplificación MUY burda, no se me juzgue por ella; que esto no es un artículo académico.
Es un oficio algo extraño, igual que pasa con el futbol o algunos deportes, tenemos una cierta "élite" (3 grupos: "académicos", "industria", "influencers"), y "clase media", y luego toneladas de gente que pringa más de lo debido. En ese esquema, yo he sido un pringuis durante mucho tiempo, y ahora estoy en esa "clase media acomodada".

S

Lo he estado viendo y está muy interesante...

n

El año de Rust en el escritorio. Oh, wait!

t

#47 Posiblemente habría que cambiarlo tanto que sería como hacer un lenguaje nuevo.

m

#80: Depende de lo que se quiera hacer, si son tantos cambios como para hacerlo un lenguaje tan lento como Python... quizás sea mejor usar ese lenguaje o alguno similar para ciertas funciones y dejar C para otras.

Ehorus

#65 no , a ver.. si te entiendo, hablar de ax o mov es un coñazo. Por no hablar de hacerlo en lenguaje máquina... Sobre los sistemas críticos, pues depende si hablamos de sistemas de vigilancia o de sistemas de gestión para el control de la señalización.. ahí me pillas algo frio.

#64 Gran parte de los errores que se cometen en C son debidos a que es un lenguaje más antiguo que otros no a que sea un mal lenguaje.

Descargar la tarea de gestión de memoria en el programador ahora es un riesgo pero el peor rendimiento de lenguajes más modernos al respecto como Java no era posible con los procesadores de hace 30 años.

Y lo digo con conocimiento de causa que empecé a programar en Java en 1998.

inar

#28 Si es que él mismo lo dice en el propio artículo, que se inclina por Rust pero que aun queda mucha vida a C y C++. Aquí muchos asesinando lenguajes y empresas, extremando posturas, y esto no es una cuestión de elegir y defenestrar nada, sino de complementar y evolucionar.

Un par de días después de esta declaración, Russinovich volvió a sacar el tema en su Twitter. Recordó que "hay una enorme cantidad de C/C++ que se mantendrá y evolucionará durante décadas (o más). Anoche codifiqué una función para Handle, que se suma a las aproximadamente 85.000 líneas de código C/C++ de Sysinternals que he escrito". Pero tambiñen añadió que "me inclinaré por Rust para las nuevas herramientas".

Como recuerda #34, Sysinternals era un pozo de sabiduría y herramientas para sistemas Microsoft.

NapalMe

Y así, para evitar errores, en vez de contratar programadores listos, mejor usar un lenguaje para programadores junior. Sale mas económico y el resultado ya tal...

NapalMe

#47 "habilitarlo para poder programar de forma segura" Eso limitaría su potencia, que es la gracia de esos lenguajes. Lo que hay que hacer es contratar gente que sepa lo que hace.

coderspirit

#84 Ya en la época de C había lenguajes con mejores propiedades (como mejores sistemas de tipos, sin irnos a rollos academicistas como Haskell), y que ofrecían rendimientos similares. Lo que lo hizo ganar terreno sobre todos los demás fueron 3 factores:
- que se usó en UNIX
- que se usó para crear las "libc" que a día de hoy aglutinan toneladas de funcionalidades básicas para interactuar con los sistemas operativos.
- era fácil de implementar compiladores de C, se podían hacer compiladores "de una sola pasada", que son más simples que los compiladores de múltiples pasadas.

C no es malo sólo por la gestión manual de memoria, lo es también por su sistema débil de tipos, por sus macros horrendas, por sus ficheros de cabecera, por su ecosistema de herramientas, por las decisiones incomprensibles tomadas por el comité ISO...

Ejemplo: Tenemos Zig, que también necesita que el programador gestione la memoria, y sin embargo es mucho más limpio como lenguaje.

NapalMe

#50 Y para eso teneis visual basic.

m

#79: Si es de metal, derramas el café y no lo limpias...

spidey

#4 A ver, en este caso, y viendo que muchos proyectos libres están refactorizando en Rust, y que el propio kernel de linux que desde su nacimiento no ha admitido más lenguajes de programación en la próxima release se espera compatibilidad con Rust, igual no van desencaminados. Aunque sea Microsoft.

Hasta un reloj parado da la hora correcta dos veces al día.

Y hay que tener en cuenta que el lenguaje lo creó Mozilla, y ahora está en manos de su propia fundación (Rust Foundation).

j

#16 estoy de acuerdo, pero veo 2 handicaps aquí.
La base de código en C que tenemos a día de hoy no va a desaparecer de la noche a la mañana y reescribir cosas como el kernel de Linux o ffmpeg no es trivial en absoluto.
Y segundo y más importante, la curva de aprendizaje de Rust es realmente dura para recién iniciados y bastante dura para programadores con experiencia. Eso provoca que, si vas a iniciar un nuevo proyecto, elijas C, que es extremadamente simple en comparación.

Todavía nos quedan al menos 20 o 30 años más de ver C por todas partes.

t

#87 ¿Insinúas que es lo que hicieron cuando contrataron programadores en C para no tener que hacerlo en ensamblador?

j

#32 #33
https://doc.rust-lang.org/book/

Los autores publican el libro en tapa blanda.

b

#67 desde hace dos años, con el lanzamiento de .net 5 la cosa ha cambiado.

Ahora está .net 6 y en nov sale .net 7, desde el .net 5 alucinas con lo fácil que es lanzar una web corriendo sobre un docker con alpine linux (con menos de 150mb tienes el docker de SO + .net6 corriendo asp.net)

a

#11 "foundation" significa base, no fundación

b

#71 así es, además ahora están lanzando MAUI para correr apps de escritorio en Windows, android y Mac. Eso sí, para Linux no lo han sacado pero la comunidad ya está dándole para que lo he hecho con Maui corra en Linux

Grub

Visual basic 4. Chupito!!! (Y comentario 100 POLEEEEE)

1 2