Una vez más, el índice Tiobe, que se basa en la popularidad de búsquedas de los distintos lenguajes de programación en Internet, ha otorgado el premio honorífico de lenguaje de programación más importante de 2019 y también ha lanzado la lista de los más utilizados a enero de 2020. En lo que respecta al premio honorífico del lenguaje de programación más importante de 2019, contra todo pronóstico, ha recaído en C a pesar de contar con 48 años desde su implementación.
|
etiquetas: desarrollo , software , sorpresa , lenguajes , programación , premio , honorífico
www.youtube.com/watch?v=VSlBhAOLtFA
Lo de las capas me recuerda a un ex compañero que se dedicaba a hacer "wrappers" para todo. Los diseñadores encantados con él, por supuesto, aunque su trabajo no sirviese para nada.
Eso sí, la genericidad no es mala y tener una buena estructura y arquitectura es importante. Pero no es algo que cualquier mindundi pueda hacer.
Es como usar C++
Tienes disponible "más que C" pero bastante menos que C++ completo. En el caso de C, por lo "cutre" que es, no pierdes nada. Y esta cutrez es su fuerte
Mi favorito es que funciones constexpr ahora pueden tener try/catch
Otra cosa es que me digas: hazme un algoritmo determinado en Python y en ensamblador. Ahí dependerá de la pericia del programador que pueda o no resolver con éxito el trabajo.
No obstante puedo corroborar que la programación en C, gracias al compilador CC65, esta bastante bien optimizado y no me ha impedido hacer virguerías varias. Mucha gente hoy en día incluso hace juegos completos y con toda la complejidad que te de la gana.
Tambien es cierto que todo esto tiene la ayuda de librerias escritas en ensamblador que te dan funciones que te facilitan mucho la vvida luego en C.
#116 Es por falta de tiempo el no poder ponerme a ello.
>Es por falta de tiempo el no poder ponerme a ello.
Hay IDEs cojonudos para 6502 y librerías ASM.
#82 En Linux puede, OpenBSD no tiene tantas. Solo 331.
Igual te podía dar algun quebradero de cabeza algo como Battletoads, por poner un ejemplo.
Bueno el BattleToads y otro shooter plataformero que no recuerdo y que también exprimia la cacharra.
Si quieres te paso el "The Go programming language" en privado.
Aunque tambien tienes esto online, en castellano:
gotour-es.appspot.com/#1
EDIT: Tutorial online español.
De todas formas, si tiene la filosofía de C, deberían haberlo llamado de alguna forma similar a C, por ejemplo Cgo, C-go o algo por el estilo, como C++ y C#, del que yo nunca me imaginé que ese # significaba "dos incrementos" (son cuatro mases ++ ++), pero además, es una referencia al sostenido en música (que eleva el tono), de hecho C# es una nota musical, en concreto un tono de 277.183 Hz.
Al final son tantos lenguajes de programación (tal vez más que criptomonedas), que aclararse de cual es cual se vuelve complicado.
Ejemplos en el C de plan9:
Compilar un programa para amd64:
9c cosa.c
9l -o cosa cosa.9
Compilar para ARM:
5c cosa.c
5l -o cosa cosa.5
En Go:
GOARCH=arm go build ex.go
GOARCH=amd64 go build ex.go
Obviamente si ya estás en ARM o AMD64 no hace falta poner nada, solo "go build loquesea.go".
Para mí están diciendo que en un futuro puedes mandar javascript a la mierda y escribir código para la web en cualquier lenguaje para el que haya un compilador, que el navegador leerá y procesará el código wasm. Que actualmente no se pueda prescindir totalmente de javascript es normal. No puedes ponerte a correr antes que andar con todo el desarrollo actual que depende de javascript, pero el paso lógico del wasm es prescindir de javascript como lenguaje único para la web
KaffeJamVM.Hubo más: en.wikipedia.org/wiki/Mika_VM
Una instrucción en ensamblador la puede pasar a máquina cualquiera sin esfuerzo alguno en unos segundos.
En este ejemplo que hay en la wikipedia se puede ver perfectamente el tema.
en.wikipedia.org/wiki/Instruction_set_architecture#/media/File:Mips32_
blog.schmorp.de/2015-06-08-emulating-linux-mips-in-perl-1.html
Yo por ejemplo normalmente, dependendiendo que programa y que micro, veo más claro algo programado y programar en máquina que en ensamblador, comprendo mejor el funcionamiento del programa y del microprocesdor/controlador y de toda la circuitería asociada.
Esto seguramente sea porque soy electrónico y no informático, con lo que me entiendo mucho mejor a nivel de hardware que de software.
El tema en ASM es comentar cada linea.
Por cierto, programar para la vectrex con vectores en el 6809 es infinitamente más sencillo que hacer un juego similar para el CoCo o similares con igual CPU.
Aún así yo veo mucho más claro ver las tensiones que hay en cada pata de los integrados y las que le tienes que meter, cosa que con ensamblador no ves a menos que te sepas de memoria los opcodes y el formato que tienen las instrucciones del micro en cuestión.
Programar para la Vectrex será más fácil por las capas de abstracción que tendrá la propia máquina, date cuenta que estas máquinas llevan un programa metido en varias EPROMs o similar que define los aspectos de la consola.
Es como programar un x86 para un IBM PC o compatible o para otro cacharro con un firmware diferente a BIOS. Aun siendo el mismo micro la programación puede ser totalmente diferente a nivel de hardware, interrupciones, acceso a memoria, etc., a menos que programes directamente sobre el propio micro saltándote el firmware, si es que este permite hacer tal cosa en su totalidad.
Bueno algunos compiladores permiten macros y saltos
Sobre la Vectrex, si, tiene una BIOS, y editar la fuente de la ROM es trivial.
De todas formas una gran mayoría microprocesadores/controladores también permiten saltos a la hora de programarlos en máquina, mira el opcode jmp en los x86 por ejemplo. en.wikipedia.org/wiki/JMP_(x86_instruction)
Estos ensambladores lo hacen un nivel por encima del de máquina, o sea sobre el propio programa, luego el compilador lo que hace es pasar directamente a la línea que le has marcado con el salto y traducir a partir de esa línea obviando todo lo anterior, de ahí que sea igual pero no sea igual.
Si adicionalmente utilizas "relentizadores" como symfony tendrás la sensación que vas marcha atrás.
benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are
www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=fo
github.com/rfht/fnaify
Nuestros juegos se reducen a source ports, emulacion (hasta la Wii, RPCS3 tira pero necesitamos una QT más reciente, la PSP con PPSSPP tira perfecta desde hace años) y juegos con C#.
Nos falta .Net core, pero poco a poco.
Por cierto, el programa que usamos para bajarnos juegos de Steam también usa C#, "depotdownloader".
EDIT: Si acaso me molesta no tener un port de .Net Core 2.0, que es el futuro y que Unity va a tirar hacia eso de forma nativa sin wrappers/juegos en C++, añadiendo más juegos en mi SO favorito.
Lo mismo con OpenJDK11, tiene parte del AOT de Graal
Al ser iOS un sistema cerrado y al controlar su principal entorno de programación (IDE) tienen mucha más libertad para forzar más fácilmente el uso del lenguaje, libs y demás que quieran. En el caso de Android con Kotlin, el crecimiento por ahora está siendo bastante alto y se está viendo mucho esfuerzo por parte del equipo de Android en promocionar el lenguaje, por lo que habrá que ver este año si cambia el panorama.
// www.jetbrains.com/lp/devecosystem-2019/kotlin/