JetBrainS ha publicado los resultados de su encuesta anual para desarrolladores Python, en ella buscan identificar las últimas tendencias dentro del mundo de la programación sobre uno de los lenguajes más amados por los programadores y de crecimiento más rápido en los últimos años. En la encuesta participaron unos 24.000 desarrolladores procedentes de más de 150 países, lo que ayuda a pintar una imagen bastante clara de la comunidad alrededor de este lenguaje. De todos los entrevistados, más del 80% usa Python como su lenguaje de programación
|
etiquetas: python , lenguajes de programacion , desarrolladores , programadores
En una encuesta entre desarrolladores de Python, ¿solo el 80% usa Python?
Ahora en serio, afortunados de trabajar del idioma que estudiaron
No voto negativos, pero...
"Python 3 ya es la versión más usada, recordemos que hace apenas unos meses finalizó el soporte de Python 2 tras más de 20 años. Sin embargo, el 10% de los encuestados aún lo usa de forma activa. "
Cuando alguien en algún lenguaje de programación como C++ hace una librería científica, le implementa la interfaz para que pueda ser usada por Python para el manejo de los datos de entrada y salida, de allí la supuesta fortaleza de este lenguaje.
La decepción fue porque a la larga, el "experto" en inteligencia artificial con Python no es más que un usuario final que sólo hace "uso de librerías" y se queda atrapado por lo que ofrece X o Y librería.
Corregidme si me equivoco.
Ahora saldrán también los programadores diciendo que si Python es una mierda porque usa tabuladores, que si el tipado no es estático y les revienta el cerebro que las variables no estén declaradas una por una, que si no se puede hacer esto que utilizo yo y tres personas más en el mundo o que es muy lento porque no es compilado (aquí tenéis una palabra mágica para vuestro vocabulario: cython). Que sí, que vuestro lenguaje de programación favorito es la hostia y que en Python mal, pero lo cierto es que hace el 90 por ciento de las cosas habituales de cualquier lenguaje de programación con una sintaxis sencilla y encima para el tratamiento de datos es mejor que el 90 por ciento de los restantes lenguajes de programación que existen (salvo R, por supuesto).
Cuando crees que tardaría usando python y cuánto en C? Por supuesto que C es más versátil, ya que es programación de alto nivel, pero para hacer un gráfico en python solo necesito indicar los datos y decir cómo quiero el gráfico.
Cuando esté todo más que investigado, ya se encargará el experto programador en C++ en realizar una implementación fiable, robusta, eficiente, etc. del modelo final para meterla en el robot de turno o lo que sea.
Cosas que no me gustan de Python: su orientación a objetos, su libreria de expresiones regulares (que sí, que una expresión regular es lo mismo en Python que en cualquier otro lenguaje pero su manera de 'envolverlas' no me convence), no tener una estructura de datos para matrices, sí se puede hacer perfectamente con listas anidadas pero no me gusta, muchas veces tienes datos que son claramente tabulares y que no van a cambiar de tamaño dinámicamente y el que no te pete si hay un inconsitencia, i.e. en alguna parte del flujo metes un dato de más en una fila, no me gusta. Es lentísimo, muchos memes se han hecho con Java acerca de su lentitud y la verdad es que Python lo es mucho más, Java a mejorado mucho en ese aspecto. Su uso de las funciones anónima lo siento capada con respecto por ejemplo Javascript.
Cosas buenas de Python: su E/S de ficheros, para los principiantes es la ostia les enseñas a utilizar sus listas y no necesitan más estructuras de datos hasta dentro de meses. List comprehension. Su librería estandar es inmena para dar y regalar y algunas de las librerías son muy útiles y no he encontrado su par en la mayoría de lenguajes.
Hoy en día el lenguae que más bonito me parece es el denostado Javascript. Eso sí me tuve que leer un libro, a diferencia de Python si viens de C te puede poner directamente con Python sin ninguna parafernalia pero si haces lo mismo con Javascript te vas a frustrar, Javascript cambia muchas cosas cruciales con respecto a C (el ámbito de las variables mismamente) y si no lo comprendes te vas frustar y lo vas a odiar, pero conforme entiendes el por qué de las cosas de Javascript creo que te cambia la visión del lenguaje y lo ves muy interesante. Quitando el hecho de que la libreria standar en Javascript es mucho más pequeña en Python creo que una vez interiorizas Javascript puede que sea le lenguaje dónde más rápidamente se puede programar. Su uso de las funciones anónima es exquisito y los cambios que hacen en el ámbito de las variables y funciones te permiten hacer cosas muy rápidamente que en otros lenguajes serían mas coñazo.
Actualmente Python es mi lenguaje 'secundario', si tengo que automatizar cualquier pequeña cosa hecho mano de él, pero me gustaría dejarlo de lado. A veces me planteo pasarme a Javascript para esas tareas (si, JS se pede usar fuera del explorado y tiene E/S de ficheros) pero lo suelo descartar porque ya me he acostumbrado a ciertas librerias de Python, pero vaya creo que Javascript está mucho mejor pensado que Python y que introduce novedades potentísimas a la hora de generar codigo robusto de forma eficiente (eficiente con respecto a que el programador eche menos horas programando).
Ahora mismo mi uso de lenguajes:
Algo en lo que el redieminto es crítico? c/c++
Una aplicacion de escritorio? Java (en su base no me gusta y me parece verborreico hasta decir basta pero creo que ha ido evolucionando muy bien y su eficiencia ha mejorado una barbaridad)
Algo rapidito que automatizar? Python (aunque lo quiero sustituir)
En programación web no he tocado mucho, pero si tuviese que meterme pasaría de PHP y SQL y me iría a JS en backend y MongoDB. Pero vaya que me falta mucha experiencia, lo más seguro que me acabaría dando una ostia pero intentaría que JS fuese mi lenguaje tanto el fronted como en el backend.
Pero este es un error circunstancial que no tiene relevancia. El error grave, a mi juicio, está en relacionar la implementación de una librería con el concimiento en IA. Los que implementan librerías de IA para Python en C, también emplean a su vez otras librerías desarrolladas por programadores de sistemas que hacen uso de instrucciones específicas del procesador para optimizar los cálculos (como MKL, por ejemplo). Quienes a su vez emplean ensamblador, que es un lenguaje que implementan los ingenieros que desarrollan el hardware. Quienes a su vez...
Tirando de este hilo llegaríamos a la conclusión de que los epistemólogos, o los físicos de partículas si nos ponemos positivistas, son los mayores expertos en cualquier rama del saber humano. Lo cual es obviamente falso.
Y, abundando en la introspección, existe una paradoja aún escalarecedora: hoy en día nadie es capaz de describir de manera algorítmica los resultados que proporcina el deep learning y, sin embargo, es uno de los puntales de la IA. Lo cual es otra muestra de que el concimiento en IA, y en cualquier otra rama del saber, no depende del conocimiento que se tenga del funcionamiento de las herramientas sino del uso que se haga de ellas.
Resumiendo: el mejor tenista del mundo no fabrica raquetas
Llevo toda la vida programando en Java (ya felizmente abandonado), Python y los últimos as en Go, esto tras pasarme toda la universidad usando C y C++ como lenguajes de aprendizaje tanto en clase como por mi cuenta, y sólo puedo decir que cuando escucho a algún supuesto programador o ingeniero decir "Python es un lenguaje de scripting" asumo directamente que no merece la pena perder mi tiempo escuchando lo que esa persona tenga que decir sobre programación ni sobre computadoras.
cc: #26
Mis aplicaciones de escritorio, las cuatro mierdecillas que he picado para entretenerme en casa y las dos cosas que alguna vez he hecho para mis curros, en Qt/C++.
Java ni tocarlo, vamos.
Y demasiada obsesión veo ahí con "las listas". Las listas de Python son simplemente una característica del lenguaje, una estructura de datos implementada, como los diccionarios, las tuplas o los conjuntos. La libreŕia estándar del lenguaje además contiene colecciones de contenedores de datos de alto rendimiento que facilitan muuuuuuuuuucho cualquier cosa que tengas que hacer con datos. Y en el caso de que Python fuera un problema por su rendimiento, que suele ser la excepción y no la regla, me iría a C++ y no a Java, eso lo tengo claro.
En cuanto a JavaScript, en 2020 y con ES6, sigue siendo un lenguaje de juguete y un chiste comparado con Python. Y MongoDB tiene su nicho de utilidad, que es absolutamente restringido a determinados casos de uso, y detrás una legión de newbies y wannabes que siempre quieren usar MongoDB para absolutamente todo porque SQL no lo conocen ni tienen interés en aprenderlo.
Ahora bien, tienes razón en que hay mucho experto que usa la librería de scipy, lo mezcla con procesado de datos con pandas, o algún modelo preentrenado en las librerías mencionadas anteriormente, y ya se dice que es un experto. Pero nada más lejos de la realidad.
meta.stackexchange.com/questions/10369/which-tools-and-technologies-ar
YouTube inicialmente se hizo todo en Python. Me imagino que ahora son todo microservicios o vete a saber. Instagram es una aplicación desarrollada en Django y con PostgreSQL de base de datos. Reddit gastaba nosequé microframework en Python. DropBox, todo en Python también (contrataron a Guido Van Rossum de hecho). Pinterest, Bitbucket... están también hechos en Django...
Por mi trabajo tengo que usar mucho otros lenguajes, tanto de alto como bajo nivel. Y adoro el Python. Me parece extremadamente práctico.
#6 Sabes que unas de las librerías más utilizadas de álgebra lineal está programada (al menos originalmente) en Fortran, no? Y que muchos algoritmos de los que comentas, es muy probable que las usen? Esto hace "menos" al C++? O hace "menos" a estos algoritmos que comentas y a sus programadores?
Es más, cuantos programas enlazan librerías escritas en otros lenguajes? O que me dices de cuando a veces, dentro de C/C++ se pone ensamblador para las partes más críticas?
Pero para eso está numpy, no? Python se apoya en librerías como Numpy/Scipy, Pandas, etc. Cuando tienes que lidiar con datos. Y ahí tienes miles de formas de reestructurar, indexar y transformar los datos, de forma extremadamente práctica.
¿Qué hace cython exactamente?
Los tabuladores una aberración y el hecho de que peta en tiempo real con cosas que deberian petar en compilación hace perder mucho tiempo.
No sé, lo único que decía que me molaría que de base tuviese esa estructura de datos, sin tener que meter una librería no estándar de por medio. En fin, no vuelvo a poner un mensaje de informática en la vida
Viene uno buenamente a expresar su opinión basada en lo que sabe y admientiendo que aún le queda mucho por aprender y le caen palos por todos lados. Y no palos argumentados, palos del tipo "NO SABES NADA, X ES MEJOR QUE Y, SOY MEJOR QUE TÚ"
Python es un lenguaje de scripting"
Python es sin duda un lenguaje interpretado, que es literalmente el significado de scripting... así que en eso tienen razon. Otra cosa es que lo que quieran decir es que solo vale para hacer scripts... Pero técnicamente es un lenguaje de scripting. Así que si alguien te dice eso espera a ver si te dice algo más y no dejes de escuchar no vaya a ser que sepa más que tú.
PyPy no tiene nada que ver con C. Está escrito en Python (RPython para ser exactos, que es un subconjunto de Python) y es un compilador JIT. Además, todas las implementaciones de Python te permiten escribir en lenguaje estilo Python lo que más se ajustaría a tu descripción es Cython, pero tampoco tiene nada que ver con PyPy.
es más rápido que esa misma función programada en Python. Pero no es más rápida que esa función programada en C.
No he dicho que una función programada en PyPy sea más rápida que esa misma función programada C; sino que PyPy, como implementación de Python, es mucho más eficiente que CPython. Y prácticamente cualquier algoritmo implementado en Python se ejecutará más rápido sobre PyPy que sobre CPython.
No hablaba del lenguaje de implementación del algoritmo (que necesariamente tiene que ser Python si se quiere ejecutar con PyPy) sino de la implementación del intérprete (CPython) / compilador (PyPy).
Es un tema que a cualquiera que le gusten las matemáticas le fascinaría.
P.D. los cálculos no te salían mal por la precisión del tipo double de c++. (Al menos no exactamente y técnicamente hablando aunque por ahí van los tiros).
El problema es que incluso aunque tengas una precisión superior a la necesaria, no significa que todos los números comprendidos en ese rango de precisión puedan ser representables en formato binario mantisa + exponente y por tanto se van acumulando errores en los cálculos.
Confieso que no recuerdo todos los pormenores del asunto. Pero si a alguno le pica el interés ya sabe por donde tirar para aprender algo más.
Ser un "usuario final" no es tan sencillo, no es tan fácil como pasar unos parámetros y llamar a una función, tienes que saber a fondo como funciona tu modelo - independientemente del lenguaje en el que esté implementado - para no cometer errores, tienes que saber combinar distintos bloques de forma adecuada para tu problema, etc. Para muchos tipos de trabajo no es necesario hilar tan fino como para necesitar cambiar el código de las librerías, y si lo necesitas hacer de forma puntual no es tan problema el tener que lidiar con librerías en distintos lenguajes.
Hay una lista enorme de sesgos que suele aplicar a la programación la gente que no la conoce. Y sin duda uno de los más frecuentes es que los lenguajes de menor nivel son "mejores" que los lenguajes de más alto nivel; una proyección quijotesca de la programación en la cual un lenguaje que te obliga a escribir más líneas de código para implementar un determinado algoritmo es necesariamente mejor.
Un punto de vista "deportivo" compartido por muchos de los que no saben que la programación sólo tiene un objetivo: resolver problemas.
Lo que sí es un error es incluir HTML/CSS como lenguaje de programación. Pero ya no es cosa del artículo sino de JetBrains, que me imagino que alguna razón tendrían (sospecho que de marketing), porque de programación saben un rato largo.
Pero esa expresividad y sencillez son, en muchas ocasiones, una virtud mayor que el aprovechamiento de recursos. Son incontables los proyectos y startups que han comenzado con un producto implementado completamente en Python y que, una vez que fueron rentables, comenzaron a optimizar los cuellos de botella con otras implementaciones. Probablemente muchas de ellas, si lo hubiesen hecho al revés, nunca habrían llegado a ser viables.
Como dice Donald Knuth: "premature optimization is the root of all evil".
- Aplicaciones de escritorio y portabilidad interplataformas: tiro de C++ y librerías Qt, que son una puta pasada.
- Aplicaciones de servidor: si el rendimiento no es un problema, y salvo que estés haciendo tratamiento masivo de datos en tiempo real no suele serlo, usaré Python por sus excelentes características, su facilidad de desarrollo, su expresividad y su eterna colección de librerías de batalla. Si el rendimiento es un problema, usaré Golang.
Java ha quedado obsoleto. Bueno, en realidad estaba obsoleto ya hace 10 años, porque hace 10 años ya teníamos Django (que en cuestión de características integradas y usabilidad deja a Spring a la altura del betún, si has gastado ambos y eres objetivo compartirás esta opinión) y Qt.
"Lenguaje interpretado" no significa literalmente "lenguaje de scripting". Ni siquiera objetivamente significa "lenguaje de scripting". De hecho, el término "lenguaje de scripting" es ridículo a más no poder y está basado en las opiniones personales de algunos programadores de hace 20 años que se asustaban al ver como en Python o Ruby se hacían cosas en 2 días que ellos con sus C++ (lenguaje que personalmente me gusta) tardaban una semana. "Lenguaje de scripting" era una expresión usada explícitamente para denigrar a un determinado lenguaje: "con esa mierda sólo puedes hacer scripts, para las cosas serias usa Java/C++/C que es más robusto blablabla". Como si Python o Ruby fueran una especie de "bash" o algo así, por ser lenguajes interpretados (ambos compilan a bytecode, por cierto, es decir que no son completamente interpretados sino que la tecnología va más allá de "interpretar este código".
"Lenguaje de scripting" no significa una mierda y precisamente en el gigantesco universo Python si llegas hablando de "lenguajes de scripting" se van a reír en tu cara gente que lleva programando en todo tipo de lenguajes desde hace décadas. Y esas expresiones son perfectas para detectar a cuñaos, así que mejor deja de usarlas no sea cosa que vayas a dar una mala impresión a tus interlocutores.
Me vale que se discuta si un lenguaje determinado tiene "mejor diseño" o "mejor implementación" que otros. PHP por ejemplo ha sido literalmente basura durante muchísimos años, con unos fallos internos de seguridad y de tipos garrafales (hay posts en todas partes para aburrir). JavaScript hasta ES6 daba bastante asquete por mil motivos también. C++ los programas anteriores a C++11 se pueden hacer realmente duros de leer pero por lo demás a mí me parece cojonudo y sobre todo los últimos 10 años ha evolucionado que no veas. Java como idea es la polla y la máquina virtual es una obra de arte, además de ser jodidamente eficiente desde que metieron el Hotspot hace ya mil años. Python es una preciosidad, sobre todo cuando vienes de cualquier otro lenguaje, y en cuestiones de eficiencia tienes Cython o Pypy que tienen en determinados casos un rendimiento que se equipara a otros lenguajes como Go...
Dime qué quieres programar y te diré qué lenguaje yo te puedo recomendar de los que conozco (los más famosos, realmente, me dejo en el tintero otros que no conozco demasiado como Scala, Elixir, Ruby, Erlang...). Pero ponerte a decir que Python mal "porque no tiene esta librería" o "porque es un lenguaje de scripting" lo dice ya todo del supuesto programador.
No seas tan sensible. Y escribe todo lo que quieras de informática. Tu mensaje aunque pudiera estar incompleto no era malo.
En principio es un lenguaje orientado a escribir poco código, y normalmente los códigos más compactos suelen ser más complicados de entender, porque tienes muchas cosas a la vez en una única función.
No digo que para un programador experto sea más eficaz, ágil... pero no fácil, porque para ser fácil hay que ser más explícito. Es decir, si tú pones (ojo, estoy saltando a JavaScript) un bucle for, unas instrucciones y su cierre, puedes ver bien lo que hace, si usas filter, pues ya tienes que saber qué es filter, cómo funciona... Y es que hoy para empezar a programar, no recomendaría ni JS ni Python, sigo pensando que lo mejor es C o C++ sin clases ni operadores ternarios, que van muy pelados y tienes que hacer las cosas paso a paso. ¿Que el código ocupa mucho? Sí, pero un principiante lo ve mejor, y eso es la facilidad.
Y otra es que el lenguaje no haga nada que no se le pida, y Python tiene cierta manía, como añadir saltos de línea en print, salvo que le digas que no los quieres. En C y C++ si quieres saltos de línea los tienes que poner explícitamente, si no sale todo seguido en consola, y eso está bien para que los principiantes se acostumbren y entiendan cómo funciona un ordenador.
Es decir, el lenguaje más fácil es el más pelado, que no tenga nada en plan "¿y esto por qué ocurre así?", donde para explicar eso tengas que dar 1000 vueltas, o que al menos sea lo mínimo posible.
De hecho, yo C lo enseñaría usando los %d y %f de forma aislada, en un printf sin nada más, y poniendo varios printf seguidos, así se entiende mejor lo que hacen, y luego explicaría que se pueden combinar y cómo. O sea, cuanto más simple, mejor.
Ahora estoy migrando a servidor implementando APIs con Flask. Y tener todo mi código más unificado y más fácil de mantener.
"Desarrollador"* lo pongo así, porque aunque desarrollo no me considero como tal, aún. Sería algo como un junior, aún estoy aprendiendo y no tengo formación de desarrollador más que el módulo que hice hace la tira de años.
Quitado eso, amo Python. La verdad, es que por mi entrenamiento en desarrollo, vengo de Pascal. La sintaxis de C nunca me ha entrado. No me ha acabado de convencer, y por lo tanto Python es un lenguaje que por su simplicidad y naturalidad del lenguaje me encanta. Además la forma de tratar ciertas estructuras de datos es ultra cómodo, por ejemplo las listas o las "estructura de datos comprehension", aunque principalmente sea con listas.
Ahora, que voy a cliente-servidor, miraba como hacer el cliente, pero no me queda otro que tirar a JavaScript. Había mirado Brython, y había visto que había una biblioteca tipo "Angular" llamada Anpylar, pero que no se mantiene desde 2018, así que me tocará aprender Javascript para hacer incluso un "mockup" rápido de la parte cliente. La parte de servidor lo hago en Flask. Aunque debería de mirar de pasar a "async".
Además, Python es un lenguaje que te permite hacer desarrollos en cualquier lado. Y para escritorio estoy muy contento con PyQT.
Y con respecto a las redes neuronales, ya que las nombras, es el peor ejemplo que has podido poner. ¿Que es implementar un algoritmo de red neuronal? Porque esa frase no tiene sentido. Me lleva a pensar que tampoco es que hayas tocado muchas cosas de IA.
No haces todo de 0. La lógica la pones tú, pero operaciones comunes en muchis proyectos suelen ser hechas por otros.
Nobse si te refieres a hacer todo desde 0.
Toma un par de referencias para que aprendas un poco anda:
preserve.mactech.com/articles/mactech/Vol.15/15.09/ScriptingLanguages/
www.bitsavers.org/pdf/ibm/360/os/R01-08/C28-6539-4_OS_JCL_Mar67.pdf
a ver si vas a saber tú ahora más que IBM
Que la gente use le palabra negro para denigrar a los negros no la hace menos descriptiva de las personas negras.
Python tiene cosas buenas y cosas malas como todos los lenguajes pero es un lenguaje interpretado y punto pelota. Y la definición más aceptada a nivel internacional de un lenguaje scripting es el de un lenguaje capaz de ser ejecutado sin ser compilado. Y Negar la mayor no te va a dar la razón en eso.
La sensación que tengo yo es la contaria que tú. Aquel que pone el grito en el cielo porque le digan que python son scripts (que lo són) es porque es un fanático que no puede ver más allá y solo ve ataques en lo que es una definición objetiva.
Para ejecutar un programa en python necesitas el intérprete. La definición está ahí y no se le puede retorcer demasiado.
Con esto no quiero decir que sea malo ni pretendo denigralo. Simplemente es un hecho.
En cualquier caso no deja de ser una cuestión semántica supongo. Que no estamos hablando de las bondades técnicas de un lenguje u otro si no de una puñetera definición que quieras que no se ha inventado en los últimos 50 años como mucho.
Yo sinceramente no entiendo tanto fanatismo con estas cosas.... Mi lenguaje es el mejor y punto. Pues no colega... Cada lenguaje tiene sus ventajas y sus inconvenientes.
Anda que no he hecho yo programitas en bash (en BASH!) porque hacerlo en c era matar moscas a cañonazos.
Jetbrains es el puto demonio, se dedica a infectar la comunidad con IDEs a medias para que la gente pase por caja.
en.m.wikipedia.org/wiki/Programming_languages_used_in_most_popular_web
Cosas super simples para alguien que esté acostumbrado a python las hago muy engorrosas
Yo Angular lo dejaría de lado, es un framework que está guay para el lado corporativo porque es strongly opinionated (no sé ni cómo traducir esa mierda ), lo cual en la práctica significa que todos los proyectos de Angular son muy parecidos en estructura y diseño y por lo tanto los programadores son fácilmente sustituibles. Fuera del lado corporación, Angular está, por lo que veo a mi alrededor, entrando en desuso y la gente opta más no por frameworks sino por librerías como React o Vue.
En mi empresa creo que la mayoría de equipos están haciendo las UI en React. Hay algo en Angular por allí, pero creo que todo es React.
Tampoco defiendo a capa y espada a Python, ojo, que yo pienso como tú que cada lenguaje tiene sus ventajas e inconvenientes, pero aquí en menéame se ha echado mierda sobre Python por cosas como decía antes. Y encima es que parece que si no usas C o Java es que eres un impuro y no deberías mencionar la palabra programación en la vida, cuando el contexto en el que se suele usar Python (machine learning) le da mil vueltas a los otros dos.
Que print escriba una línea lo hace mucho más fácil de usar desde el principio, y que se llame print en vez de printf, println o sys.stdout.write o similar, también.
Respecto a lo que dices de filter, u otros elementos como map, lambda, los iterables, etc... Son elementos que un principiante normalmente no necesita, y se puede programar sin ello (excepto en ciertos dominios, como la ciencia de datos).
Además, Python es bastante agnóstico respecto a los paradigmas de programación, por lo que sirve para aprender programación estructurada, funcional, orientada a objetos... Yo creo que eso tiene un valor en sí mismo, ya que te permite aprender los diversos paradigmas y enfoques sin perderte en temas de sintaxis.
Otra ventaja que tiene a la hora de profundizar es la capacidad de introspección que tiene. Añade el tipado, que es flexible pero riguroso, y lo claro que es su sistema de errores y excepciones (nada que ver con JavaScript en ese aspecto).
Y respecto a lo de que:
En principio es un lenguaje orientado a escribir poco código
Sí y no. Eso depende del programador. Lo que sí se intenta es que el código que se escriba sea significativo.
En mi opinión Python tiene una curva de aprendizaje ideal, y puede ser la puerta a otros lenguajes en la medida que sea necesario. Por eso no es solo que piense que Python gusta a muchos programadores... Es que considero que la existencia de Python hace que más gente quiera programar y se atreva a ello.
¿Podrías concretar un poco más a qué te refieres? Me sorprende mucho leer a alguien expresarse en esos términos sobre JavaScript.
Justo al revés, porque si quieres hacer un rectángulo de asteriscos (que es algo básico en C) ya tienes que andar metiendo excepciones, y todo porque esa función hace cosas que no la pides, salvo que la pidas que no lo haga. Precisamente la programación debería aprenderse con funciones que no hagan nada salvo que se lo pidas.
Sí y no. Eso depende del programador. Lo que sí se intenta es que el código que se escriba sea significativo.
En Python siempre se ha presumido de poner poco código, y en mi opinión eso es lo peor que puedes hacerle a un principiante, esconderle las cosas. En mi opinión no hay que esconder, sino no mostrar e introducir poco a poco. Ejemplo, el "n" de C, en vez de esconderlo, lo mejor es enseñarlo tras enseñar a poner Hola mundo o el resultado de alguna operación sencilla o el valor de una variable.
Además, Python es bastante agnóstico respecto a los paradigmas de programación, por lo que sirve para aprender programación estructurada, funcional, orientada a objetos... Yo creo que eso tiene un valor en sí mismo, ya que te permite aprender los diversos paradigmas y enfoques sin perderte en temas de sintaxis.
Lo cual en mi opinión es otro fallo, lo mejor es aprender con C lo básico y luego ya ir saltando poco a poco a los diferentes paradigmas, de uno en uno, no todos a la vez.
Mi especialidad son los sistemas empotrados (aunque ahora mismo estoy desarrollando una aplicación genérica para la interfaz con un robot quirúrgico en c++ y Qt) . Así que ahí poco margen de maniobra ahí, c, c++ y poco más y aunque en determinadas circunstancias lo que hacer en python sería trivial pues no lo puedes hacer porque en un sistema baremetal no hay tu tía porque no tiene sistema operativo, así que olvídate de meterle un intérprete de ningún tipo. (Con excepción de la máquina virtual de java embedded en algunos dispositivos que lo soportan) .
Pero para el desarrollo de aplicaciones en general pues hay un mundo de posibilidades y cada uno se ajusta mejor a unas cosas u otras, pero también puede darse el caso de que aunque un lenguaje vaya en teoría un poco mejor que otro para un caso concreto... si tienes un equipo de expertos en otro lenguaje que aunque encaje un poquito peor (en teoría) en ese proyecto pues la elección sigue siendo obvia. Van a hacer un mejor trabajo con su lenguaje de confianza que con otro.
Lo que no se puede hacer es obcecarse en ningún sentido.
Quizá por estar metido en el mundo de los sistemas empotrados para mí sí es clara esa distinción entre lenguaje interpretado y compilado. Y aunque para @Supercinexin no le guste esa descripción ni la palabra scripting pues para mi es bastante claro. Cualquier lenguaje que no se pueda ejecutar (tras compilarse o no) en un sistema baremetal para mi es un lenguaje scripting porque no lo puedo meter en un sistema empotrado.