Aquí os dejo un manual de prácticas de Python pensadas para aprender sin tener ningún conocimiento previo. Pensada para alumnos de bachillerato, pero invitamos a cualquiera que quiera iniciarse a que lo pruebe. Estas cosas que se comparten para el bien de todos tienen un alto coste en tiempo y esfuerzo, así que también se agradece mucho la difusión y aportaciones que queráis hacer.
#19:
#10 Hay un nada de agradecimiento al autor en tu comentario.
Que sí, que el autor podría hablar de TDD, de inyección de dependencias, y de lo que quieras, pero por lo que he visto en las primeras páginas, es un manual para SUPER PRINCIPIANTES que no han programado en la vida. Es como el manual del BASIC del Spectrum para que alguien haga el típico programa de input("Dime tu nombre") y luego "Hola ".format(nombre)...
Digo yo que como introducción valdrá, y sin necesidad de explicar inyección de dependencias, o de explicar patrones de diseño, para que un "chaval" se acerque a python y, si le pica la curiosidad, se mire cosas más serias...
Es un tutorial para que gente que no tiene ni idea haga sus primeros prints y fors y vea qué es un programa y qué cosas se pueden hacer. No lo van a enviar en la próxima sonda Voyager como representación de la Raza Humana...
Hay que ver qué registro usar con cada destinatario...
En fin, me rindo.
#73:
#43 El operador ternario de Python es otra cosa que es mala en el lenguaje.
En cualquier otro lenguaje es (variando sintaxis):
?:
En Python:
if else
Que para cualquier programador resulta confuso, ya que no sigue lo que viene a ser un 'standard'
#49:
Muchisimas gracias #0, ahora por fin que podre solucionar el problema que tenia ayer en mi ordenador
#44:
#40 El problema es el objetivo: si quieres aprender a 'programar' (i.e. un conocimiento independiente del lenguaje de programacion que uses) entonces Python es mala idea. Si quieres 'programar en Python', ve y aprende Python, pero en lo referente a 'programar' estas empezando la casa por el tejado.
Para aprender a programar y crear una buena base un lenguaje como ADA es bueno. De ahi puedes transicionar a C / Java / Python y lo que quieras, porque vas a tener claros los conceptos. Al final el requisito es que aprendas en un lenguaje procedural, fuertemente tipado y con manejo explicito de memoria.
#50:
#c-36" class="content-link" style="color: rgb(, , )" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment//order/36">#36 Solo digo que es una característica de lenguaje. Hay mucha gente que ve el código mas claro así (sin llaves), yo personalmente prefiero typescript a python (Aunque no le hago ascos a ningún lenguaje, cada uno tiene su encanto)
Pienso que Python está bien para algoritmos sencillos, pero en el momento que acumulas varios niveles de indentación puede ser confuso. Vaya que está bien para los que están aprendiendo a programar, o los que lo necesitan para cosas muy especificas en matemáticas, física, lingüística, etc.
En plano puramente empresarial creo que es mas recomendable los lenguajes con llaves como Java, C#, y TypeScript (No incluyo JavaScript por que la falta de tipos ralentiza mucho el desarrollo de aplicaciones grandes, ni C/C++ por creo que las asignación dinámica de memoria puede dar mas problemas que beneficios en esos ámbitos)
#24:
#10 Yo creo que tu símil del final sería más bien: Explicar cómo programar sin dar nociones sobre esos temas es como enseñar a alguien a conducir sin enseñarle a hacer trompos tirando del freno de mano ni a hacer la maniobra que hacen los policías americanos para hacer que un perseguido pierda el control de su coche.
Es un manual básico para niños. Lo que tú hablas entra del ámbito profesional.
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
print('texto A')
print('texto B')
¿Cómo sabes ahí si "texto A" va en el else o no? Sin indentación es ambiguo y los ficheros PDF a menudo se la cargan.
En JavaScript la indentación también la pierdes, salvo por un detalle: tienes las llaves y con ellas el código siempre es funcional, y el indentado automático también va a funcionar.
if (edad > 9 or altura > 1.0)else
print('texto B');
No será muy legible, pero es funcional, pero no pasa nada, muchos editores lo pueden hacer legible.
if (edad > 9 or altura > 1.0)else
print('texto B');
Es muy legible, pero no es funcional porque he tenido que añadir guiones bajos y necesitaría eliminarlos.
Este es el problema que ha introducido Python y que no existía antes, al menos desde que apareció C en los años 1970.
#33:
Aprender a programar con Python es lo peor que puedes hacer a un adolescente. Las caracteristicas del lenguaje son buenas para una persona que ya sepa programar. Si estas empezando, la cantidad de cosas que te oculta y el que sea de alto nivel va a hacer que tu base sea pesima.
Para eso, que aprendan a programar con Excel
#28:
#17: Claro que es un problema, porque muchos TFGs se presentan en PDF, con lo que necesitas adjuntar un fichero de código o asegurarte de que el programa que genere el PDF respete los espacios.
Eso con C no era un problema, con JavaScript tampoco. Es un problema que ha introducido Python a lo tonto, porque no era tan difícil seguir la estela de C y añadir solo lo que se quiere añadir.
Que si, que hay que indentar, pero una cosa es forzarlo en mayor o menor medida y otra es confundir la funcionalidad con la legibilidad, que es el problema de Python, que la funcionalidad depende del indentado.
#11:
Probad a copiar el código y pegarlo, y mirad cuál es la principal debilidad de Python:
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
Así sale en el Bloc de notas, sin indentar, en JavaScript la cosa no iría mejor, salvo por un detalle: en JS al haber llaves el código siempre va a ser funcional y además se puede indentar automáticamente en el editor. Yo no pongo en duda las bondades de Python, pero basar el código en la indentación y no seguir el estilo de C, siempre lo veré como un error o incluso un retroceso tecnológico.
Que si, que está muy bien lo de indentar el código, pero... ¡No basar la funcionalidad del código en la indentación!
#10 Hay un nada de agradecimiento al autor en tu comentario.
Que sí, que el autor podría hablar de TDD, de inyección de dependencias, y de lo que quieras, pero por lo que he visto en las primeras páginas, es un manual para SUPER PRINCIPIANTES que no han programado en la vida. Es como el manual del BASIC del Spectrum para que alguien haga el típico programa de input("Dime tu nombre") y luego "Hola ".format(nombre)...
Digo yo que como introducción valdrá, y sin necesidad de explicar inyección de dependencias, o de explicar patrones de diseño, para que un "chaval" se acerque a python y, si le pica la curiosidad, se mire cosas más serias...
Es un tutorial para que gente que no tiene ni idea haga sus primeros prints y fors y vea qué es un programa y qué cosas se pueden hacer. No lo van a enviar en la próxima sonda Voyager como representación de la Raza Humana...
Hay que ver qué registro usar con cada destinatario...
#10 Yo creo que tu símil del final sería más bien: Explicar cómo programar sin dar nociones sobre esos temas es como enseñar a alguien a conducir sin enseñarle a hacer trompos tirando del freno de mano ni a hacer la maniobra que hacen los policías americanos para hacer que un perseguido pierda el control de su coche.
Es un manual básico para niños. Lo que tú hablas entra del ámbito profesional.
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
print('texto A')
print('texto B')
¿Cómo sabes ahí si "texto A" va en el else o no? Sin indentación es ambiguo y los ficheros PDF a menudo se la cargan.
En JavaScript la indentación también la pierdes, salvo por un detalle: tienes las llaves y con ellas el código siempre es funcional, y el indentado automático también va a funcionar.
if (edad > 9 or altura > 1.0)else
print('texto B');
No será muy legible, pero es funcional, pero no pasa nada, muchos editores lo pueden hacer legible.
if (edad > 9 or altura > 1.0)else
print('texto B');
Es muy legible, pero no es funcional porque he tenido que añadir guiones bajos y necesitaría eliminarlos.
Este es el problema que ha introducido Python y que no existía antes, al menos desde que apareció C en los años 1970.
#40 El problema es el objetivo: si quieres aprender a 'programar' (i.e. un conocimiento independiente del lenguaje de programacion que uses) entonces Python es mala idea. Si quieres 'programar en Python', ve y aprende Python, pero en lo referente a 'programar' estas empezando la casa por el tejado.
Para aprender a programar y crear una buena base un lenguaje como ADA es bueno. De ahi puedes transicionar a C / Java / Python y lo que quieras, porque vas a tener claros los conceptos. Al final el requisito es que aprendas en un lenguaje procedural, fuertemente tipado y con manejo explicito de memoria.
Aprender a programar con Python es lo peor que puedes hacer a un adolescente. Las caracteristicas del lenguaje son buenas para una persona que ya sepa programar. Si estas empezando, la cantidad de cosas que te oculta y el que sea de alto nivel va a hacer que tu base sea pesima.
#17: Claro que es un problema, porque muchos TFGs se presentan en PDF, con lo que necesitas adjuntar un fichero de código o asegurarte de que el programa que genere el PDF respete los espacios.
Eso con C no era un problema, con JavaScript tampoco. Es un problema que ha introducido Python a lo tonto, porque no era tan difícil seguir la estela de C y añadir solo lo que se quiere añadir.
Que si, que hay que indentar, pero una cosa es forzarlo en mayor o menor medida y otra es confundir la funcionalidad con la legibilidad, que es el problema de Python, que la funcionalidad depende del indentado.
#c-36" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3195288/order/36">#36 Solo digo que es una característica de lenguaje. Hay mucha gente que ve el código mas claro así (sin llaves), yo personalmente prefiero typescript a python (Aunque no le hago ascos a ningún lenguaje, cada uno tiene su encanto)
Pienso que Python está bien para algoritmos sencillos, pero en el momento que acumulas varios niveles de indentación puede ser confuso. Vaya que está bien para los que están aprendiendo a programar, o los que lo necesitan para cosas muy especificas en matemáticas, física, lingüística, etc.
En plano puramente empresarial creo que es mas recomendable los lenguajes con llaves como Java, C#, y TypeScript (No incluyo JavaScript por que la falta de tipos ralentiza mucho el desarrollo de aplicaciones grandes, ni C/C++ por creo que las asignación dinámica de memoria puede dar mas problemas que beneficios en esos ámbitos)
Probad a copiar el código y pegarlo, y mirad cuál es la principal debilidad de Python:
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
Así sale en el Bloc de notas, sin indentar, en JavaScript la cosa no iría mejor, salvo por un detalle: en JS al haber llaves el código siempre va a ser funcional y además se puede indentar automáticamente en el editor. Yo no pongo en duda las bondades de Python, pero basar el código en la indentación y no seguir el estilo de C, siempre lo veré como un error o incluso un retroceso tecnológico.
Que si, que está muy bien lo de indentar el código, pero... ¡No basar la funcionalidad del código en la indentación!
#41 Precisamente en Java hay 'evoluciones' (Kotlin, Groovy) para hacerlo menos estricto con los tipos y Typescript para hacer lo contrario con Javascript. Pero eso no es problema. El problema con Python (o más bien sus fans) es que intentan convencer que no usar llaves y sí indentado obligatorio es una ventaja, cuando crea más problemas de los que resuelve.
#7 Conozco varias apps para móvil, como Py, Enki, SoloLearn y Learn Python . Apenas las he usado así que tampoco te puedo recomendar ninguna en concreto.
#35 Mejor un lenguaje procedural fuertemente tipado con manejo explicito de memoria. Luego transicionar a orientacion a objetos y recolector de basura. Por ultimo leguajes de alto nivel como Python.
Ensamblador se tiene que aprender en la carrera en asignaturas de arquitectura de computadores.
#50 Si acumulas mas de 4 niveles de indentacion tu complejidad ciclomatica esta por las nubes, tu codigo no se puede testear de forma razonable y hace demasiadas cosas.
A Python lo podemos criticar por un millon de cosas, pero el que te "impida" (que no lo hace) indentar mucho vendria a ser algo positivo mas que negativo.
El problema de la indentacion es que puede dar lugar a errores inesperados que con llaves no existirian. Por eso en C se recomienda poner siempre llaves incluso si tu 'if' es de una sola linea: para ser explicitico en el contexto.
La falta de llaves tambien hace que el minimo contexto de las variables en python sea a nivel de funcion / metodo. Otros lenguajes (como Perl) el contexto de variables es de bloque, y su vida se reduce a dentro de los . Esto hace que el codigo sea mas robusto.
#26 Estaría bien que usando este mismo manual introdujeses como aporte los conceptos de los que hablas, así quedaría más completo y sería de gran utilidad para los principiantes.
#28 Eres fan de las !!! En todos los post que se habla de Python criticas la indentación y la falta de llaves, cuando creo que esto es una apreciación tuya....Deberías de pensar que cada lenguaje tiene sus particularidades y ya está...Python es estricto a la hora de escribir, y Java con el tipo de datos...¿Por qué no se usa en Java el tipo de dato igual para todo? Pues porque es un lenguaje fuerte tipado, molaría que fuera como Perl o Js que con un tipo de variable pues te vale para casi todo, y así no pensar.... pero no. Yo quiero a los lenguaje de programación por cómo son (cada uno tendrá sus cosas buenas o malas) pero son como son, no hay que darle más vueltas.
Y si pretendes hacer un "copipaste", sin tener que corregir indentaciones... lo llevas claro, porque a mí por ahora, la mayor parte de las veces que he copiado algo me ha tocado retocarlo, pero no sólo en Python, sino en otros muchos lenguajes....
#26 Entiendo tu razonamiento, pero, y es solo mi opinión, ¿porque no se lo explicas al autor y echas una mano en otra edición del documento?
Yo vengo de JAVA y quiero empezar con python y este manual no me parece un mal punto para comenzar. Ojo, y creo saber patrones de diseño y demás fanfarrias.
#51 Creo que yo partí de la documentación oficial de TypeScript que creo que está en inglés. No obstante, si ya has usado JavaScript, prácticamente ya sabes casi todo lo necesario para empezar con TypeScript
Yo typescript lo uso en dos partes de una aplicación web:
-> Para el cliente en angular (obligatorio typescript, no confundir angular con angularjs) que consume datos del servidor REST
-> Para el servidor REST en nodejs usando express pero con código typescript transpilado a código javascript.
Tengo en mente hacer algún tutorial de como combino ambas cosas en un mismo repositorio git, y como lanzar todos los procesos que hacen falta para que funcione (tanto en desarrollo como en producción) usando pm2. No obstante existe multitud de información de en la red.
#23 Casi cualquier IDE te va a marcar como indentar eso. A mi personalmente me parece una maravilla la indentación. Es lo que le da la gran "readability" a Python, y esa es una de las mejores cosas que tiene Python, ves un código y lo lees como si fuera un texto casi. Tambien si quieres puedes hacerte el chulo y hacer todo en una linea:
print('pasa') if edad > 9 or altura > 1.0 else print('no pasa')
Pero hacer eso asi precisamente choca con el dogma de python.
#31 si alguien está aprendiendo a conducir y tu ves que nadie le dice que no debe hacerlo borracho o drogado, ¿tu le advertirías? Pues añade esa información al documento, haz un manual práctico tu o al menos crea una lista de sitios interesantes donde otros se puedan formar. De esa manera, dejas patente tu opinión respecto a lo que se debe aprender y al mismo tiempo das los medios para que sea posible
#28 Es que cuando entregas el TFG tienes que entregar los ficheros a parte obligatoriamente. En la vida vas a ver a un profesor copiando el codigo del PDF en su editor y compilando, ademas que es una cutrez sin sentido.
Decir que esa es una debilidad de Python es como decir que los demas lenguajes son peores por depender de las llaves, porque ¿y si en tu teclado se te rompe la tecla de la llave { eh, eh, eh? a ver que haces ahora listo????? vas a estar todo el rato copiando y pegando llaves???
#80 Amargados de la vida que no aceptan que JavaScript es el BASIC de los millenials.
#33 cualquier lenguaje imperativo con el que conocer las estructuras de control y funciones/procedimientos. La sintaxis es irrelevante.
También evitar los lenguajes orientados a objetos, al menos al principio. No se debería hacer OO hasta pasar por Patrones y tener un mínimo de experiencia. Eso descarta Java, Smalltalk y Objective-C.
También descartaría el uso de librerías aunque sean las standard. Cuando aprendes a programar, estás aprendiendo algoritmos (bucles, condiciones) y a estructurar tu código (funciones/procedimientos), no a usar librerías.
Tienes que programar estructuras de datos antes de usar estructuras de datos.
Aprender a programar pasa por sufrir a fuego el mantenimiento de código spaghetti alguna vez para no hacerlo jamás o leer código identado 80 columnas y dejar media pantalla vacía.
Luego pasas por libros de algoritmos y el concepto de coste.
A partir de ahí, pues depende de para qué vayas a programar: que si frontend web, aplicaciones nativas, backend...
#59 Al principio seria mejor algo mas estricto que C, tipo ADA o similar. Pero a mi tu evolucion me parece correcta y te habras 'formado' (en principio) de forma mas completa que alguien que haya empezado directamente con Python.
#35 Pues depende para que incluso en código máquina, para determinadas cosas es mucho más fácil e intuitivo comunicarse directamente, programar directamente la electrónica del ordenador o aparato electrónico.
Realmente el código máquina no es más que una traducción literal del ensamblador, cuando metes un opcode en ensamblador lo haces porque memotécnicamente es más fácil y mucho más corto a la hora de escribirlo, pero básicamente le estás diciendo al micro, por esta pata te meto un 1, por esta otro 1, por esta un 0 y por esta otro 1 y así sucesivamente pero con letras y de forma abreviada.
#93: ¿Y qué haces en Python si se te rompe la barra espaciadora o la tecla intro? #troll
Es cierto que se suelen dar los ficheros en un anexo, pero fíjate que con C eso no es problema.
De todas formas: ¿Te gusta estructurar el código con espacios? Me parece estupendo, pero luego no pretendáis que al resto nos guste así, porque yo he tratado de programar para FreeCAD y en pocas horas terminé odiando Python y lo de programar con espacios.
Muchas gracias. Yo ahora estoy empezando a aprender C como hobby (no soy programador) con el libro de Ceballos, pero me llama mucho la atención Python, así que para la saca
#40: En mi opinión con C o C++. ¿Que es complicadillo? Tal vez, pero luego de ahí saltas casi a lo que quieras.
Tampoco es cuestión de estudiar C en toda su potencia, pero si para tener una noción básica (estructuras de código, tipos de datos, vectores, matrices, un poco de asignación dinámica de memoria, un poco de formateo, un poco de ficheros...).
De C++ me quedo con su sencillez para entrada y salida de datos (con "los piquitos"), pero para conocer más un ordenador "en crudo" es peor que C. Tampoco es cuestión de hacer ensamblador (algo que debería conocerse a modo de noción, sin programar). Puede pareceros demasiado hablar de ensamblador (sin usarlo ni tener que memorizar), pero a lo mejor la gente dejaría de pensar que el ordenador es el Espíritu Santo y que hace los milagros que le pidas.
Si no se exagera, es asequible para mucha gente y se tiene una base buenísima, ya no para programar, sino para más o menos saber qué es un ordenador y qué puede hacer y qué no.
#11 Que sea un lenguaje que cueste programar usando el bloc de notas es una ventaja!
Igual se recomienda usar espacios para indentar (en todo caso los editores serios convierten los tabs en espacios para comodidad) y ahí no hay problemas en el copiar pegar.
editado:
ahí entendí, el problema es el trim que está haciendo menéame en los comentarios, bueno, en cualquier foro de programación hay tags para específicar código...
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
Javascript está donde está sólo porque es el único lenguaje que interpretan todos los navegadores, pero como lenguaje de programación es un pastiche que pasará a la historia como la mayor violación del principle of least astonishment (PoLA) de un lenguaje conocido.
#113 Joder, es que ya hay que ser cutre para indentar con dos espacios
A partir de 157 cada "def" es una función que termina cuando aparece el siguiente el elemento al mismo nivel de indentación. Es decir, es como el formato clásico de lista:
- elemento uno
- elemento dos
- elemento tres
- elemento cuatro
Todos ahí vemos claramente que el elemento "dos" está incluido en el "uno", que el "tres" lo está en el "dos" (y por tanto en "uno") y que el elemento "cuatro" está al mismo nivel jerárquico de "uno".
un lenguaje de programación es mejor si es asequible a todo el mundo y no restringido a profesionales
Totalmente de acuerdo. Y esa es la opinión mayoritaria que he escuchado sobre Python, y no tanto sobre Javascript. Con lo de "me gano la vida con ello" no quería dar a entar que por ello mi opinión sobre su legibilidad fuese más válida que la de otros, sino dar a entender que mi experiencia o gusto personal tampoco es un argumento a favor o en contra. La legibilidad es totalmente cuantificable, en base a un montón de parámetros (de los cuales desconozco más de la mitad), y en ese aspecto lenguajes como Python, Haskell o Smallscript aparecen siempre en los primeros puestos.
Obviamente en nuestro caso, que ya sabemos programar, nuestro bagaje pesa más que esos aspectos porque, digámoslo así, tenemos el entendimiento viciado. Y que conste que las llaves no me disgustan en absoluto, mis problemas con Javascript son otros. De hecho Kotlin me parece una auténtica virguería (y me reconcilió con la JVM, algo que no hizo ni Jython). Y Go no estaría mal si no fuese por esa lamentable gestión de errores a las que les ha llevado querer renegar de las excepciones y del try-catch-finally para acabar enmascarándolo en panic, recover y defer.
#115: Yo normalmente indento con uno o dos, si pongo mucho más el código se me hace demasiado disperso.
Lo que si tengo que decir es un problema que está apareciendo en JS y en otros lenguajes: el exceso de atajos. Para el que programa mucho están bien, pero para los que no se dedican a ello... es una barrera porque es fácil no saber lo que se hace, con lo que al final es posible que veamos programas "para profesionales" y otros desarrollados a bajo nivel por gente más aficionada donde haya reglas que limiten el número de funciones del lenguaje usado.
#116 Sí, ese riesgo de la "jerga" siempre está ahí, pero por suerte las herramientas de análisis estático en JS están cada vez más pulidas (como "xo") y pueden reparar códigos que a simple vista uno preferiría volver a escribir antes de enfrentarse a ellos
La verdad es que en los últimos años todo mi acercamiento a JS, ya fuese en el front con React o Vue o en back con Node ha sido a través de Typescript. Y ya últimamente, en VSCode, en el que Typescript se integra perfectamente y que han acabado convirtiendo la experiencia de programar para el browser en una actividad insospechadamente placentera
Y respecto a los espacios en blanco, debo reconocer que es algo que he tenido que ir corrigiendo a lo largo de los años. Recordándome que los enters son gratis, que el código está hecho principalmente para ser leído y obligándome a pensar en ocasiones en cómo vería ese código si no lo hubiese escritro yo, lo que me ha hecho en muchas ocasiones sustituir one-liners con atajos como los que comentas por dos o tres líneas mucho más evidentes a simple vista.
A mi juicio, que sea sencillo y explícito son las mejores cualidades que puede tener un pedazo de código cualquiera. Y después viene todo lo demás.
Yo flipo con algunos comentarios: alguien sube un recurso para gente que no tiene ni idea de programacion (yo, por ejemplo, que ya le estoy echando un vistazo) y la gente se le echa al cuello, al igual que al autor del documento. No solo eso sino, que cada uno, dependiendo de su experiencia, recomienda millones de cosas contradictorias entre comentarios. La gente que no sabemos agradecemos aportes como estos que van cortita y al pie. El que no este de acuerdo podria mandar sus aportes o crear un documento mejorandolo o de otro lenguaje.
Yo paso de pedir recomendaciones, no parece que haya un estandar para aprender, solo puedo echar vistazos a cosas como estas e intetar aprender.
#120 Pues sí, la tecla AltGr está en una posición muy incómoda y además sólo hay una y queda en la misma mano que la otra tecla que hay que pulsar para escribir el corchete.
Es de las pocos caracteres para los que necesito mover toda la mano en lugar de uno o dos dedos y casi siempre tengo que mirar el teclado porque una vez quitada la mano de su posición para pulsar el AltGr no sé donde queda el ' o el ç. Si al menos hubiera otra AltGr en la otra mano seria mucho más cómodo.
La tecla AltGr me queda bien para escribir, por ejemplo, € porque pulso esa tecla especial con una mano y escribo el carácter con la otra (con lo que ninguna pierde su posición en el teclado), pero para los corchetes un engorro porque sí lo hago.
#11 Esa es una situacion ficticia que nunca va a pasar. Todo el codigo que copies esta indentado, y el IDE te lo va a saber reindentar donde lo pegues sin problema.
No cuentan cómo se hacen gráficas en pantalla. ¿De qué te sirve un manual si no te dice cómo hacer gráficas en pantalla? tiene que ser el primer capítulo. Aunque sea solo poner un punto en pantalla, y por ilusionar al personal.
#77 En mi campo (sistemas) puedes hablar con los weblogics o WebSphere con jython, es lo mismo básicamente pero usas la api del webserver.
Por otro lado, puedes hacer scripts para automatizar tareas que recurran a ciertos servicios, por ejemplo insertar algo en una bbdd. Yo lo tengo para tener control de las vms que tengo.
#107: ¿Sabías que JavaScript también se puede indentar?
De hecho yo rara vez he visto código JS no indentado, y aunque lo viera... ¿Sabías que se puede indentar automáticamente? Y lo que es mejor, adaptarlo a mis ojos, no tener que seguir la forma de ver del creador de Python, que él tendrá sus ojos, pero y no tengo por qué ser igual que él. Porque esa es otra, se piensan que la forma de ver de todo el mundo es igual, no se dan cuenta de que lo que para una persona es demasiado compacto para otra puede estar demasiado disperso. Se piensan que todos salimos de un mismo molde.
¿Y sabes cuál es para mi la principal diferencia entre JS y Python? Que en JS he podido hacer cosas, en Python NO, lo tuve que dejar por imposible, no soporto eso de tener que estructurar el código con espacios.
En JS si no quiero usar el operador "+" para concatenar cadenas de texto, tengo esa opción, Python en cambio no da ese tipo de libertades, tiene que ser todo como su creador diga.
En mi opinión JS se adapta al programador, en cambio en Python es el programador el que se tiene que adaptar a Python.
#111: Yo no me gano la vida programando, pero si uso la programación y puedo decir varias cosas:
- Prefiero la estructuración del código mediante "llaves ocultas" (como dices) a tener que andar quitando y poniendo espacios para hacer una triste prueba para localizar un fallo.
- Yo siempre indento JavaScript y lo hago a mi gusto, no al gusto de los creadores de JS. El código resultante es muy legible a mis ojos.
- Me gusta tener las cosas bien separadas, si tengo un IF me gusta ver la condición entre paréntesis, si no me pones paréntesis me cuesta diferenciarla. Como dije, cada persona tiene sus ojos y yo tengo los míos.
Y eso que está coloreada la sintaxis, con JavaScript yo he usado hasta el Bloc de notas.
¿Resultado? Soy incapaz de programar en Python sin mandarlo a freír espárragos antes de 6 horas de "trabajo", a lo mejor no seré profesional, pero un lenguaje de programación es mejor si es asequible a todo el mundo y no restringido a profesionales.
#57 Pues nos quedamos con la duda, porque teniendo en cuenta que topazo es un identificador, y no una cadena, el único requisito es que ambos tengan el mismo valor...
#108¿Sabías que JavaScript también se puede indentar?
Qué remedio. Aunque desde conocí Typescript no he vuelto a tocar Javascript ni con un palo.
En JS si no quiero usar el operador "+" para concatenar cadenas de texto, tengo esa opción
En Python también:
cadena = ("un trozo" "de la cadena" ", y también puedes" "incluir saltos de línea")
es perfectamente válido.
Más allá de tu experiencia personal con ambos lenguajes o de la mía, que es la de llevar un buen puñado de años ganándome la vida con esto, y de las "formas de ver" y gustos que tenga cualquiera, la legibilidad es un concepto perfectamente cuantificable.
La cuestión no es que "puedas" indentar, sino que la indentación, al tener una semántica, te permite interpretar el código sin buscar relaciones ocultas por llaves. No puedes engañar al ojo con Python. Javascript sin embargo, lo hace constantemente.
Puedes estar seguro de que jamás encontrarás a Javascript en los primeros puestos en una encuesta sobre legibilidad. Aunque quizás sí te encuentres a Coffeescript... cuya diferencia más notable con Javascript consiste en sustituir las llaves por indentación
#99 Yo tengo muchos problemas, en forma de código de mierda por todas partes.
Y es que creo firmemente que lo siguiente que debe enseñarse después del hello world, herencia y polimorfismo, son nociones básicas de buenas practicas.
Sencillamente, no quiero que nadie que no tenga dichas nociones sepa programar.
#106 Cuando hay una mucha paja, cuesta encontrar trigo. Prefiero que no me llenen el ecosistema de mierda. Uno es muy comodón.
Tu evidentemente prefieres que sea de fácil acceso. Fantástico, la mayoría está contigo por el momento y no parece que vaya a cambiar, así que disfruta.
En cualquier caso no voy a seguir discutiendo con alguien que necesita faltar el respeto constantemente para ofrecer su opinión.
Comentarios
#10 Hay un nada de agradecimiento al autor en tu comentario.
Que sí, que el autor podría hablar de TDD, de inyección de dependencias, y de lo que quieras, pero por lo que he visto en las primeras páginas, es un manual para SUPER PRINCIPIANTES que no han programado en la vida. Es como el manual del BASIC del Spectrum para que alguien haga el típico programa de input("Dime tu nombre") y luego "Hola ".format(nombre)...
Digo yo que como introducción valdrá, y sin necesidad de explicar inyección de dependencias, o de explicar patrones de diseño, para que un "chaval" se acerque a python y, si le pica la curiosidad, se mire cosas más serias...
#26 Vaya tela, macho, qué poca empatía.
Es un tutorial para que gente que no tiene ni idea haga sus primeros prints y fors y vea qué es un programa y qué cosas se pueden hacer. No lo van a enviar en la próxima sonda Voyager como representación de la Raza Humana...
Hay que ver qué registro usar con cada destinatario...
En fin, me rindo.
#11 No es una debilidad es una feature
Muchisimas gracias #0, ahora por fin que podre solucionar el problema que tenia ayer en mi ordenador
print ("Mis dieses")
#10 Yo creo que tu símil del final sería más bien: Explicar cómo programar sin dar nociones sobre esos temas es como enseñar a alguien a conducir sin enseñarle a hacer trompos tirando del freno de mano ni a hacer la maniobra que hacen los policías americanos para hacer que un perseguido pierda el control de su coche.
Es un manual básico para niños. Lo que tú hablas entra del ámbito profesional.
#2 No tengo nada que ver con este manual más que el ser un usuario más
#16: ¿Cómo indentas automáticamente eso?
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
print('texto A')
print('texto B')
¿Cómo sabes ahí si "texto A" va en el else o no? Sin indentación es ambiguo y los ficheros PDF a menudo se la cargan.
En JavaScript la indentación también la pierdes, salvo por un detalle: tienes las llaves y con ellas el código siempre es funcional, y el indentado automático también va a funcionar.
if (edad > 9 or altura > 1.0)else
print('texto B');
No será muy legible, pero es funcional, pero no pasa nada, muchos editores lo pueden hacer legible.
if (edad > 9 or altura > 1.0)else
print('texto B');
Es muy legible, pero no es funcional porque he tenido que añadir guiones bajos y necesitaría eliminarlos.
Este es el problema que ha introducido Python y que no existía antes, al menos desde que apareció C en los años 1970.
#40 El problema es el objetivo: si quieres aprender a 'programar' (i.e. un conocimiento independiente del lenguaje de programacion que uses) entonces Python es mala idea. Si quieres 'programar en Python', ve y aprende Python, pero en lo referente a 'programar' estas empezando la casa por el tejado.
Para aprender a programar y crear una buena base un lenguaje como ADA es bueno. De ahi puedes transicionar a C / Java / Python y lo que quieras, porque vas a tener claros los conceptos. Al final el requisito es que aprendas en un lenguaje procedural, fuertemente tipado y con manejo explicito de memoria.
#0 Hace poco he visto estos videos de microsoft para aprender python y están muy bien, son bastante recientes:
(están en inglés pero tienen subtítulos)Si lo prefieres en español también tienes este Mooc de EDx:
https://www.edx.org/es/course/programacion-para-todos-2
( Yo lo hice hace tiempo en inglés en Coursera )
Aprender a programar con Python es lo peor que puedes hacer a un adolescente. Las caracteristicas del lenguaje son buenas para una persona que ya sepa programar. Si estas empezando, la cantidad de cosas que te oculta y el que sea de alto nivel va a hacer que tu base sea pesima.
Para eso, que aprendan a programar con Excel
#17: Claro que es un problema, porque muchos TFGs se presentan en PDF, con lo que necesitas adjuntar un fichero de código o asegurarte de que el programa que genere el PDF respete los espacios.
Eso con C no era un problema, con JavaScript tampoco. Es un problema que ha introducido Python a lo tonto, porque no era tan difícil seguir la estela de C y añadir solo lo que se quiere añadir.
Que si, que hay que indentar, pero una cosa es forzarlo en mayor o menor medida y otra es confundir la funcionalidad con la legibilidad, que es el problema de Python, que la funcionalidad depende del indentado.
#43 El operador ternario de Python es otra cosa que es mala en el lenguaje.
En cualquier otro lenguaje es (variando sintaxis):
?:
En Python:
if else
Que para cualquier programador resulta confuso, ya que no sigue lo que viene a ser un 'standard'
#c-36" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3195288/order/36">#36 Solo digo que es una característica de lenguaje. Hay mucha gente que ve el código mas claro así (sin llaves), yo personalmente prefiero typescript a python (Aunque no le hago ascos a ningún lenguaje, cada uno tiene su encanto)
Pienso que Python está bien para algoritmos sencillos, pero en el momento que acumulas varios niveles de indentación puede ser confuso. Vaya que está bien para los que están aprendiendo a programar, o los que lo necesitan para cosas muy especificas en matemáticas, física, lingüística, etc.
En plano puramente empresarial creo que es mas recomendable los lenguajes con llaves como Java, C#, y TypeScript (No incluyo JavaScript por que la falta de tipos ralentiza mucho el desarrollo de aplicaciones grandes, ni C/C++ por creo que las asignación dinámica de memoria puede dar mas problemas que beneficios en esos ámbitos)
Probad a copiar el código y pegarlo, y mirad cuál es la principal debilidad de Python:
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
Así sale en el Bloc de notas, sin indentar, en JavaScript la cosa no iría mejor, salvo por un detalle: en JS al haber llaves el código siempre va a ser funcional y además se puede indentar automáticamente en el editor. Yo no pongo en duda las bondades de Python, pero basar el código en la indentación y no seguir el estilo de C, siempre lo veré como un error o incluso un retroceso tecnológico.
Que si, que está muy bien lo de indentar el código, pero... ¡No basar la funcionalidad del código en la indentación!
#11 ¿En serio consideras una debilidad que no puedas hacer C&P de un cacho de código que te encuentras por la red y no funcione directamente?
Menudo peligro.
#41 Precisamente en Java hay 'evoluciones' (Kotlin, Groovy) para hacerlo menos estricto con los tipos y Typescript para hacer lo contrario con Javascript. Pero eso no es problema. El problema con Python (o más bien sus fans) es que intentan convencer que no usar llaves y sí indentado obligatorio es una ventaja, cuando crea más problemas de los que resuelve.
#18 Tío, pon los ":" y mantén la indentación
#7 Conozco varias apps para móvil, como Py, Enki, SoloLearn y Learn Python . Apenas las he usado así que tampoco te puedo recomendar ninguna en concreto.
#35 Mejor un lenguaje procedural fuertemente tipado con manejo explicito de memoria. Luego transicionar a orientacion a objetos y recolector de basura. Por ultimo leguajes de alto nivel como Python.
Ensamblador se tiene que aprender en la carrera en asignaturas de arquitectura de computadores.
#50 Si acumulas mas de 4 niveles de indentacion tu complejidad ciclomatica esta por las nubes, tu codigo no se puede testear de forma razonable y hace demasiadas cosas.
A Python lo podemos criticar por un millon de cosas, pero el que te "impida" (que no lo hace) indentar mucho vendria a ser algo positivo mas que negativo.
El problema de la indentacion es que puede dar lugar a errores inesperados que con llaves no existirian. Por eso en C se recomienda poner siempre llaves incluso si tu 'if' es de una sola linea: para ser explicitico en el contexto.
La falta de llaves tambien hace que el minimo contexto de las variables en python sea a nivel de funcion / metodo. Otros lenguajes (como Perl) el contexto de variables es de bloque, y su vida se reduce a dentro de los . Esto hace que el codigo sea mas robusto.
Gracias, le echaremos un ojo.
Últimamente estaba usando finxter, que te propone muchos problemas de python y tienes que averiguar la solución. Rollo gamification:
https://app.finxter.com/learn/computer/science/
Pero llegado a un punto ya tienes que pagar una pasta para seguir usandolo. Alguien conoce algo parecido con ejercicios amenos y tal?
900KiB
¿Eso en campos de fútbol cuánto es?
#11 Indentar es bueno, ayuda a la legibilidad del código. Y si el editor indenta automáticamente, ¿cual es el problema?
#26 Estaría bien que usando este mismo manual introdujeses como aporte los conceptos de los que hablas, así quedaría más completo y sería de gran utilidad para los principiantes.
#45: En JS y en C creo que también se puede hacer eso, pero va de otra forma.
printf("%s", ( edad > 9 || altura > 1.0) ? "pasa" : "no pasa");
#28 Eres fan de las !!! En todos los post que se habla de Python criticas la indentación y la falta de llaves, cuando creo que esto es una apreciación tuya....Deberías de pensar que cada lenguaje tiene sus particularidades y ya está...Python es estricto a la hora de escribir, y Java con el tipo de datos...¿Por qué no se usa en Java el tipo de dato igual para todo? Pues porque es un lenguaje fuerte tipado, molaría que fuera como Perl o Js que con un tipo de variable pues te vale para casi todo, y así no pensar.... pero no. Yo quiero a los lenguaje de programación por cómo son (cada uno tendrá sus cosas buenas o malas) pero son como son, no hay que darle más vueltas.
Y si pretendes hacer un "copipaste", sin tener que corregir indentaciones... lo llevas claro, porque a mí por ahora, la mayor parte de las veces que he copiado algo me ha tocado retocarlo, pero no sólo en Python, sino en otros muchos lenguajes....
#34: ¿Cómo sabría el editor si "texto A" va dentro del else o no?
El problema de Python es que un código copiado y pegado desde un PDF es ambiguo, con las llaves de C no ocurre eso.
Entonces, que me vendan ese lenguaje como mejor... pues no.
#26 Entiendo tu razonamiento, pero, y es solo mi opinión, ¿porque no se lo explicas al autor y echas una mano en otra edición del documento?
Yo vengo de JAVA y quiero empezar con python y este manual no me parece un mal punto para comenzar. Ojo, y creo saber patrones de diseño y demás fanfarrias.
#34 #23 Otra opción aún más simplificada:
print("pasa" if edad > 9 or altura > 1.0 else "no pasa")
#50 ¿Conoces algún manual/tutorial de TypeScript interesante?
Gracias, señor #0
#12 if nombre_usuario == topazo
print ("pos ok tio")
#51 Creo que yo partí de la documentación oficial de TypeScript que creo que está en inglés. No obstante, si ya has usado JavaScript, prácticamente ya sabes casi todo lo necesario para empezar con TypeScript
Yo typescript lo uso en dos partes de una aplicación web:
-> Para el cliente en angular (obligatorio typescript, no confundir angular con angularjs) que consume datos del servidor REST
-> Para el servidor REST en nodejs usando express pero con código typescript transpilado a código javascript.
Tengo en mente hacer algún tutorial de como combino ambas cosas en un mismo repositorio git, y como lanzar todos los procesos que hacen falta para que funcione (tanto en desarrollo como en producción) usando pm2. No obstante existe multitud de información de en la red.
#23 Casi cualquier IDE te va a marcar como indentar eso. A mi personalmente me parece una maravilla la indentación. Es lo que le da la gran "readability" a Python, y esa es una de las mejores cosas que tiene Python, ves un código y lo lees como si fuera un texto casi. Tambien si quieres puedes hacerte el chulo y hacer todo en una linea:
print('pasa') if edad > 9 or altura > 1.0 else print('no pasa')
Pero hacer eso asi precisamente choca con el dogma de python.
#5 Vale, Javi, lo que tu digas 😉 😉
#31 si alguien está aprendiendo a conducir y tu ves que nadie le dice que no debe hacerlo borracho o drogado, ¿tu le advertirías? Pues añade esa información al documento, haz un manual práctico tu o al menos crea una lista de sitios interesantes donde otros se puedan formar. De esa manera, dejas patente tu opinión respecto a lo que se debe aprender y al mismo tiempo das los medios para que sea posible
#28 Es que cuando entregas el TFG tienes que entregar los ficheros a parte obligatoriamente. En la vida vas a ver a un profesor copiando el codigo del PDF en su editor y compilando, ademas que es una cutrez sin sentido.
Decir que esa es una debilidad de Python es como decir que los demas lenguajes son peores por depender de las llaves, porque ¿y si en tu teclado se te rompe la tecla de la llave { eh, eh, eh? a ver que haces ahora listo????? vas a estar todo el rato copiando y pegando llaves???
A que es una gilipollez? pues eso.
#38 ¿Recomiendas empezar por c, luego Java y por último Python?
Coñe, voy a haber seguido una buena práctica de chiripa.
#80 Amargados de la vida que no aceptan que JavaScript es el BASIC de los millenials.
#33 cualquier lenguaje imperativo con el que conocer las estructuras de control y funciones/procedimientos. La sintaxis es irrelevante.
También evitar los lenguajes orientados a objetos, al menos al principio. No se debería hacer OO hasta pasar por Patrones y tener un mínimo de experiencia. Eso descarta Java, Smalltalk y Objective-C.
También descartaría el uso de librerías aunque sean las standard. Cuando aprendes a programar, estás aprendiendo algoritmos (bucles, condiciones) y a estructurar tu código (funciones/procedimientos), no a usar librerías.
Tienes que programar estructuras de datos antes de usar estructuras de datos.
Aprender a programar pasa por sufrir a fuego el mantenimiento de código spaghetti alguna vez para no hacerlo jamás o leer código identado 80 columnas y dejar media pantalla vacía.
Luego pasas por libros de algoritmos y el concepto de coste.
A partir de ahí, pues depende de para qué vayas a programar: que si frontend web, aplicaciones nativas, backend...
#5 Le he echado un vistazo y está genial. Mil gracias, tío.
#59 Al principio seria mejor algo mas estricto que C, tipo ADA o similar. Pero a mi tu evolucion me parece correcta y te habras 'formado' (en principio) de forma mas completa que alguien que haya empezado directamente con Python.
#73 Conozco la sintaxis de C con respecto al operador ternario, pero la de python no la conocía hasta hace poco.
#85 Estudié informática y he programado en ensamblador hace muchos años, así que no conoceré el último lenguaje pero eso lo tengo claro.
#0 Bajado, gracias!
#35 Pues depende para que incluso en código máquina, para determinadas cosas es mucho más fácil e intuitivo comunicarse directamente, programar directamente la electrónica del ordenador o aparato electrónico.
Realmente el código máquina no es más que una traducción literal del ensamblador, cuando metes un opcode en ensamblador lo haces porque memotécnicamente es más fácil y mucho más corto a la hora de escribirlo, pero básicamente le estás diciendo al micro, por esta pata te meto un 1, por esta otro 1, por esta un 0 y por esta otro 1 y así sucesivamente pero con letras y de forma abreviada.
#78: Y tan trim, en el PDF es igual.
Por eso me gusta más JavaScript y C, eso si, bien indentados, pero con sus llaves para separar el código.
#93: ¿Y qué haces en Python si se te rompe la barra espaciadora o la tecla intro? #troll
Es cierto que se suelen dar los ficheros en un anexo, pero fíjate que con C eso no es problema.
De todas formas: ¿Te gusta estructurar el código con espacios? Me parece estupendo, pero luego no pretendáis que al resto nos guste así, porque yo he tratado de programar para FreeCAD y en pocas horas terminé odiando Python y lo de programar con espacios.
#90: Depende, si pegas el código aquí creo que si se pierde el indentado.
Muchas gracias. Yo ahora estoy empezando a aprender C como hobby (no soy programador) con el libro de Ceballos, pero me llama mucho la atención Python, así que para la saca
#33 ¿Y con qué se debería aprender a programar?
#40: En mi opinión con C o C++. ¿Que es complicadillo? Tal vez, pero luego de ahí saltas casi a lo que quieras.
Tampoco es cuestión de estudiar C en toda su potencia, pero si para tener una noción básica (estructuras de código, tipos de datos, vectores, matrices, un poco de asignación dinámica de memoria, un poco de formateo, un poco de ficheros...).
De C++ me quedo con su sencillez para entrada y salida de datos (con "los piquitos"), pero para conocer más un ordenador "en crudo" es peor que C. Tampoco es cuestión de hacer ensamblador (algo que debería conocerse a modo de noción, sin programar). Puede pareceros demasiado hablar de ensamblador (sin usarlo ni tener que memorizar), pero a lo mejor la gente dejaría de pensar que el ordenador es el Espíritu Santo y que hace los milagros que le pidas.
Si no se exagera, es asequible para mucha gente y se tiene una base buenísima, ya no para programar, sino para más o menos saber qué es un ordenador y qué puede hacer y qué no.
#40 Pues con BASIC, como toda la vida.
Si ya es TurboBASIC, QuickBASIC o GWBASIC ya es un tema de sabores. Pero todo el mundo debería conocer GOTO y, opcionalmente, GOSUB.
#11 Que sea un lenguaje que cueste programar usando el bloc de notas es una ventaja!
Igual se recomienda usar espacios para indentar (en todo caso los editores serios convierten los tabs en espacios para comodidad) y ahí no hay problemas en el copiar pegar.
if edad > 9 or altura > 1.0:
print('pasa')
else:
print('no pasa')
#28 Escribir llaves con un teclado en español es un dolor de cabeza, mucho mejor indentar.
Lo hacen por "nosotros"
#11 Venga... Javascript? En serio?
Javascript está donde está sólo porque es el único lenguaje que interpretan todos los navegadores, pero como lenguaje de programación es un pastiche que pasará a la historia como la mayor violación del principle of least astonishment (PoLA) de un lenguaje conocido.
Y para muestra... un repo
https://github.com/denysdovhan/wtfjs
#113 Joder, es que ya hay que ser cutre para indentar con dos espacios
A partir de 157 cada "def" es una función que termina cuando aparece el siguiente el elemento al mismo nivel de indentación. Es decir, es como el formato clásico de lista:
- elemento uno
- elemento dos
- elemento tres
- elemento cuatro
Todos ahí vemos claramente que el elemento "dos" está incluido en el "uno", que el "tres" lo está en el "dos" (y por tanto en "uno") y que el elemento "cuatro" está al mismo nivel jerárquico de "uno".
un lenguaje de programación es mejor si es asequible a todo el mundo y no restringido a profesionales
Totalmente de acuerdo. Y esa es la opinión mayoritaria que he escuchado sobre Python, y no tanto sobre Javascript. Con lo de "me gano la vida con ello" no quería dar a entar que por ello mi opinión sobre su legibilidad fuese más válida que la de otros, sino dar a entender que mi experiencia o gusto personal tampoco es un argumento a favor o en contra. La legibilidad es totalmente cuantificable, en base a un montón de parámetros (de los cuales desconozco más de la mitad), y en ese aspecto lenguajes como Python, Haskell o Smallscript aparecen siempre en los primeros puestos.
Obviamente en nuestro caso, que ya sabemos programar, nuestro bagaje pesa más que esos aspectos porque, digámoslo así, tenemos el entendimiento viciado. Y que conste que las llaves no me disgustan en absoluto, mis problemas con Javascript son otros. De hecho Kotlin me parece una auténtica virguería (y me reconcilió con la JVM, algo que no hizo ni Jython). Y Go no estaría mal si no fuese por esa lamentable gestión de errores a las que les ha llevado querer renegar de las excepciones y del try-catch-finally para acabar enmascarándolo en panic, recover y defer.
#115: Yo normalmente indento con uno o dos, si pongo mucho más el código se me hace demasiado disperso.
Lo que si tengo que decir es un problema que está apareciendo en JS y en otros lenguajes: el exceso de atajos. Para el que programa mucho están bien, pero para los que no se dedican a ello... es una barrera porque es fácil no saber lo que se hace, con lo que al final es posible que veamos programas "para profesionales" y otros desarrollados a bajo nivel por gente más aficionada donde haya reglas que limiten el número de funciones del lenguaje usado.
#116 Sí, ese riesgo de la "jerga" siempre está ahí, pero por suerte las herramientas de análisis estático en JS están cada vez más pulidas (como "xo") y pueden reparar códigos que a simple vista uno preferiría volver a escribir antes de enfrentarse a ellos
La verdad es que en los últimos años todo mi acercamiento a JS, ya fuese en el front con React o Vue o en back con Node ha sido a través de Typescript. Y ya últimamente, en VSCode, en el que Typescript se integra perfectamente y que han acabado convirtiendo la experiencia de programar para el browser en una actividad insospechadamente placentera
Y respecto a los espacios en blanco, debo reconocer que es algo que he tenido que ir corrigiendo a lo largo de los años. Recordándome que los enters son gratis, que el código está hecho principalmente para ser leído y obligándome a pensar en ocasiones en cómo vería ese código si no lo hubiese escritro yo, lo que me ha hecho en muchas ocasiones sustituir one-liners con atajos como los que comentas por dos o tres líneas mucho más evidentes a simple vista.
A mi juicio, que sea sencillo y explícito son las mejores cualidades que puede tener un pedazo de código cualquiera. Y después viene todo lo demás.
muy buen aporte, gracias
#27 Voy por ellas a ver. Thanks
#33 Mejor el ensamblador, donde va a parar
#63 Parece chula. Dank je!
Yo flipo con algunos comentarios: alguien sube un recurso para gente que no tiene ni idea de programacion (yo, por ejemplo, que ya le estoy echando un vistazo) y la gente se le echa al cuello, al igual que al autor del documento. No solo eso sino, que cada uno, dependiendo de su experiencia, recomienda millones de cosas contradictorias entre comentarios. La gente que no sabemos agradecemos aportes como estos que van cortita y al pie. El que no este de acuerdo podria mandar sus aportes o crear un documento mejorandolo o de otro lenguaje.
Yo paso de pedir recomendaciones, no parece que haya un estandar para aprender, solo puedo echar vistazos a cosas como estas e intetar aprender.
#120 Pues sí, la tecla AltGr está en una posición muy incómoda y además sólo hay una y queda en la misma mano que la otra tecla que hay que pulsar para escribir el corchete.
Es de las pocos caracteres para los que necesito mover toda la mano en lugar de uno o dos dedos y casi siempre tengo que mirar el teclado porque una vez quitada la mano de su posición para pulsar el AltGr no sé donde queda el ' o el ç. Si al menos hubiera otra AltGr en la otra mano seria mucho más cómodo.
La tecla AltGr me queda bien para escribir, por ejemplo, € porque pulso esa tecla especial con una mano y escribo el carácter con la otra (con lo que ninguna pierde su posición en el teclado), pero para los corchetes un engorro porque sí lo hago.
#11 Esa es una situacion ficticia que nunca va a pasar. Todo el codigo que copies esta indentado, y el IDE te lo va a saber reindentar donde lo pegues sin problema.
No cuentan cómo se hacen gráficas en pantalla. ¿De qué te sirve un manual si no te dice cómo hacer gráficas en pantalla? tiene que ser el primer capítulo. Aunque sea solo poner un punto en pantalla, y por ilusionar al personal.
#11 ¿no será que el bloc de notas, si se salta caracteres de espacio, es una mierda?
#28 si pegas texto en LibreOffice te respeta los espacios.
#18 SyntaxError, te falta : al final de la comparación.
#20 Además de que ni ha declarado nombre_usuario...
no conozco Python ¿en qué ámbitos se usa Python? Supongamos que soy programador java ¿para qué podría serme útil?
#77 En mi campo (sistemas) puedes hablar con los weblogics o WebSphere con jython, es lo mismo básicamente pero usas la api del webserver.
Por otro lado, puedes hacer scripts para automatizar tareas que recurran a ciertos servicios, por ejemplo insertar algo en una bbdd. Yo lo tengo para tener control de las vms que tengo.
#95 entonces el uso es el mismo que shell script más o menos ¿no? supongo que aportará más cosas que shell script
#9:
#22: Ya verás cuál es mejor para copiar y pegar código de la red.
No todos los héroes llevan capa #0
Es justo lo que buscaba
#107: ¿Sabías que JavaScript también se puede indentar?
De hecho yo rara vez he visto código JS no indentado, y aunque lo viera... ¿Sabías que se puede indentar automáticamente? Y lo que es mejor, adaptarlo a mis ojos, no tener que seguir la forma de ver del creador de Python, que él tendrá sus ojos, pero y no tengo por qué ser igual que él. Porque esa es otra, se piensan que la forma de ver de todo el mundo es igual, no se dan cuenta de que lo que para una persona es demasiado compacto para otra puede estar demasiado disperso. Se piensan que todos salimos de un mismo molde.
¿Y sabes cuál es para mi la principal diferencia entre JS y Python? Que en JS he podido hacer cosas, en Python NO, lo tuve que dejar por imposible, no soporto eso de tener que estructurar el código con espacios.
En JS si no quiero usar el operador "+" para concatenar cadenas de texto, tengo esa opción, Python en cambio no da ese tipo de libertades, tiene que ser todo como su creador diga.
En mi opinión JS se adapta al programador, en cambio en Python es el programador el que se tiene que adaptar a Python.
#111: Yo no me gano la vida programando, pero si uso la programación y puedo decir varias cosas:
- Prefiero la estructuración del código mediante "llaves ocultas" (como dices) a tener que andar quitando y poniendo espacios para hacer una triste prueba para localizar un fallo.
- Yo siempre indento JavaScript y lo hago a mi gusto, no al gusto de los creadores de JS. El código resultante es muy legible a mis ojos.
- Me gusta tener las cosas bien separadas, si tengo un IF me gusta ver la condición entre paréntesis, si no me pones paréntesis me cuesta diferenciarla. Como dije, cada persona tiene sus ojos y yo tengo los míos.
Yo como ejemplo pondría esto:
https://github.com/shaise/FreeCAD_SheetMetal/blob/917c4fcecde8120b046be213b47df45565cd8af9/SheetMetalUnfolder.py
Mira la línea 157 y siguientes, a lo mejor tú lo ves claro, yo, sin llaves, sin paréntesis... no.
Y eso que está coloreada la sintaxis, con JavaScript yo he usado hasta el Bloc de notas.
¿Resultado? Soy incapaz de programar en Python sin mandarlo a freír espárragos antes de 6 horas de "trabajo", a lo mejor no seré profesional, pero un lenguaje de programación es mejor si es asequible a todo el mundo y no restringido a profesionales.
#34 Por lo que más quieras: legibilidad.
#88 ¿Tan complicado encuentras pulsar AltGr + ç o AltTGr + ´ ?
#0 Ahora sabemos tu nombre?
Edited
#20 y los espacios, que la legibilidad es importante
Los primeros diez capítulos como indentar correctamente, porque Python es como un niño caprichoso.
Salu2
#112 Eres claramente un tío mierdas, te lo digo con todo el desprecio del mundo, vete a tomar por el culo gilipollas.
#4 Los paréntesis tienen que ir pegados a la función: print('Mis dieses')
#14 ¿Para qué siempre lo tengas que teclear, qué ganas con eso? pregunto.
#7 exercism.io
Me parece un recurso de 10, mis dieses!! Hay un montón parecidos a este en https://apuntesfpinformatica.es/
#68 Gern geschehen!
#76 aqui tienes otra!
https://www.codewars.com
#57 Pues nos quedamos con la duda, porque teniendo en cuenta que topazo es un identificador, y no una cadena, el único requisito es que ambos tengan el mismo valor...
#108 ¿Sabías que JavaScript también se puede indentar?
Qué remedio. Aunque desde conocí Typescript no he vuelto a tocar Javascript ni con un palo.
En JS si no quiero usar el operador "+" para concatenar cadenas de texto, tengo esa opción
En Python también:
cadena = ("un trozo" "de la cadena" ", y también puedes" "incluir saltos de línea")
es perfectamente válido.
Más allá de tu experiencia personal con ambos lenguajes o de la mía, que es la de llevar un buen puñado de años ganándome la vida con esto, y de las "formas de ver" y gustos que tenga cualquiera, la legibilidad es un concepto perfectamente cuantificable.
La cuestión no es que "puedas" indentar, sino que la indentación, al tener una semántica, te permite interpretar el código sin buscar relaciones ocultas por llaves. No puedes engañar al ojo con Python. Javascript sin embargo, lo hace constantemente.
Puedes estar seguro de que jamás encontrarás a Javascript en los primeros puestos en una encuesta sobre legibilidad. Aunque quizás sí te encuentres a Coffeescript... cuya diferencia más notable con Javascript consiste en sustituir las llaves por indentación
#0 gracias, tiene muy buena pinta!
#99 Yo tengo muchos problemas, en forma de código de mierda por todas partes.
Y es que creo firmemente que lo siguiente que debe enseñarse después del hello world, herencia y polimorfismo, son nociones básicas de buenas practicas.
Sencillamente, no quiero que nadie que no tenga dichas nociones sepa programar.
#106 Cuando hay una mucha paja, cuesta encontrar trigo. Prefiero que no me llenen el ecosistema de mierda. Uno es muy comodón.
Tu evidentemente prefieres que sea de fácil acceso. Fantástico, la mayoría está contigo por el momento y no parece que vaya a cambiar, así que disfruta.
En cualquier caso no voy a seguir discutiendo con alguien que necesita faltar el respeto constantemente para ofrecer su opinión.
Que tengas un buen día.
muchas gracias #0
#29 no iba a escribir eso obviamente...
#18 no indentation, no party.