Publicado hace 6 años por Calipodelimon a puentesdigitales.com

Los mejores cursos online para comenzar este mes de abril, ordenados según un ranking de puntuaciones de los usuarios que ya los han cursado y clasificados en 3 niveles de dificultad: principiante, intermedio y avanzado.

Comentarios

D

#14 ¿Qué lenguaje le recomendarías a alguien aficionado a la informática sin motivaciones para la programación más allá de algún programilla propio que haga la vida más cómoda?

Hace como mil años que estudié C durante tres meses y practicamente no me acuerdo de nada y tampoco me apetece meterme en profundidad en el tema, en principio.

D

#59 Al final depende mucho de tu entorno y de que quieres hacer... aprender a programar es algo 'global'. Aprender un lenguaje de programacion es algo mas concreto.

En mis tiempos para aprender a programar se usaba ada95 (antes usaban modula2) y haskell. Aprendes dos 'paradigmas', tienes punteros y tipado fuerte en ada. Me parecen buenas elecciones y aunque son poco usadas laboralmente hablando dan para una buena base.

Para algo mas de 'un programilla propio para hacer la vida mas comoda' pues si estas en Windows yo iria a la PowerShell que es muy potente y viene de serie con un IDE o Python que te vale para Windows y Linux. No es muy complicado instalar el entorno, es gratuito y es sencillo. En ese caso si que es cierto que Python es productivo y amigable.... sin embargo pienso que alguien que empiece directamente con Python y no se mueva de ahi nunca tendra un entendimiento 'profundo' de como funcionan las cosas en un PC.

D

#63 Comprendo. Muchas gracias

f

#59 yo empecé con NeoBook que es un programa que en principio facilita mucho la cosa, ahí no hay tipos de variables ni nada, y con los plugins se pueden hacer muchísimas más cosas. De hecho, en mi afán de crear mis propios plugins di el salto a programar en Delphi (lenguaje Pascal). Pero como te han dicho, tampoco estaría mal empezar con Python jeje

RamonMercader

#5 En las empresas que conozco solo entienden el dinero y el dinero ya. Cambian de factoría de software solo teniendo en cuenta la pasta y así está el software. Por mi genial, mientras siga así tengo trabajo asegurado ad eternum.

D

#37 Las consultoras prestan nula atención a la calidad, les priman los tiempos para ganar más, al menos en proyectos cerrados. Si encima luego les pagan por corregir sus propias mierdas, así está el mercado.

saqueador

#5 Pues no llevan muy bien eso de que les pidas dos perfiles de arquitecto en vez de dos juniors.

D

#43 En ese caso lo mejor es justificar tu petición por escrito, explicar porqué tienen que ser dos arquitectos en ves de dos novatos.
Luego si te dicen que no y el proyecto acaba de aquella manera, tu culo estará a salvo

TiJamásLlevaTilde

#3 donde esté la lasaña...

D

#7 Es otra posibilidad. Se llama así cuando se mezcla el código entre las diferentes capas del proyecto.

http://wiki.c2.com/?LasagnaCode

TiJamásLlevaTilde

#10 lo conozco y lo empleo. Por eso lo he dicho.

ximovai

#3 El kernel de Linux está escrito de forma procedural (o el BSD kernel, el servidor web nginx...). Qué problema tiene la programación procedural?

ximovai

#13 O quizás el abuso de la programación OO sea una de las razones del código espagueti:
- "Object-oriented programming is an exceptionally bad idea which could only have originated in California" Dijkstra
- "I invented the term object-oriented, and I can tell you I did not have C++ in mind." "Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to happen to computing since MS-DOS." Alan Kay
- "Object-oriented programming offers a sustainable way to write spaghetti code" Paul Graham

D

#16 En absoluto. Es el desconocimiento de las buenas practicas de OO lo que lo provoca. Si sigues los principios SOLID es imposible tener código espagueti

https://es.wikipedia.org/wiki/SOLID

D

#20 Cualquier garrulo con ADSL puede poner las chorradas que le apetezcan en la web. Una perreta la tiene cualquiera. El primer argumento ya lo deja claro, no le gustan las siglas:

"S
The "S" refers to the Single Responsibility Principle, which, according to Clean Code by Robert Martin, means that "a class should have only one reason to change."

This statement sounds extremely vague to me, but the book explains it, stating that objects must be problem-centered and responsible for "one thing." It's up to us to decide what that one thing is, of course.

This is what we know as "high cohesion" since Larry Constantine wrote about it in the IBM Systems Journal in 1974. Why was it necessary to create a new principle 15 years later with an ambiguous name and a very questionable definition?"

S

#20 Una pregunta, ya que te veo versado y tengo una duda desde hace tiempo...por lo que tengo entendido -no soy programador, ni informático, sólo programo por vicio- en C++ las clases son tratadas por el compilador como un struct, por lo tanto ¿En cuánto se diferencia un programa en C/C++ con struct que ese mismo programa hecho en C++ con clases?

ximovai

#27 Struct y class es lo mismo, la diferencia es que struct es público por defecto y class es privado. Has oído hablar de rust?

S

#31 Conocía esa diferencia, auque nunca había oído hablar de rust, pero a lo que voy es a eso...¿es criticable el uso de clases y en consecuencia, de POO, si le das el uso equivalente de struct?¿En qué haría mejor cambiar eso y usar Struct o incluso cambiarlo por C?

ximovai

#36 yo crítico OO, solid, tdd, onion architecture, Dtos, inyección de dependencias y toda la amalgama de arquitectura, capas,frameworks que se usa hoy en día porque se acaba haciendo overengineering... Te pongo un ejemplo :
hello world en java "enterprise edition"
https://gist.github.com/lolzballs/2152bc0f31ee0286b722

S

#38 Vigen del cordero divino....a ver, yo aprendí a programar en Pascal...hace muuchos años ya...y aprendí en la facultad Java, C, C++, R...todo acercamiento a la POO me pareció siempre un exceso de complicaciones. Hace no mucho vi esta charla y me gustó bastante:

Aunque había cosas que no entendía, pillaba la mayoría...ahora estoy liado en un programa C++ con POO -4k líneas llevo ya- donde evito todo lo complejo por una mezcla de desconocimiento e intuición -herencia múltiple, poliformismo...- y reconozco tener sentimientos encontrados. No puedo negar ver ciertas ventajas como tampoco puedo obviar la frustración de quebraderos de cabeza o complejidades innecesarias, y temo acabar creando un monstruo de espagueti volador inmanejable

D

#45 Pues para mi la herencia y Polimorfismo una vez se entienden bien son de las mejores idea de la programación.

Saber que tus clases tienen una base común con la que puedes trabajar independientemente de que añadas nuevos tipos que te hagan cambiar el código.

El típico ejemplo si tu tienes una clase Animal que tiene el método comer() Luego puedes crear una clase Perro que hereda de la clase Animal y añadir el método ladrar(). SI en el futuro además de perros también tienes la clase Gato que hereda de la clase Animal y le añades el método maullar() también tendrá el método comer() heredado de Animal.

Lo mejor de esto es que gracias al polimorfismo no importa cuantos Animales nuevos añadas en el futuro, todos tendrán el método comer() y cuando los invoques como Animales clase padre sabes que llamando a ese método funcionará.

Otra aproximación interesante es la basada en componentes. Donde tu le enganchas al objeto una lista de componentes, pero depende de lo que quieras hacer será mejor una aproximación u otra.

S

#50 La herencia simple sí la uso, pero más allá empiezo a liarlo todo....y con Poliformismo me pasa algo similiar... se me antoja una buena idea sobre el papel que puede irse de madre en cuanto te descuidas. Pero como decía, soy prácticamente autodidacta, así que para defenderme me acojo a tu frase "una vez se entienden bien"

saqueador

#38 Ese ejemplo es una gilipollez, pero si cuando dices POO quieres decir Java, puedo llegar a estar de acuerdo. Pero una cosa son las ideas y otra la realidad, y la realidad es que Java es el lenguaje mas implantado en grandes proyectos. Y no es solo por su sencillez, es por los patrones que lleva asociados su "enterprise edition". Veamos en unos años que lenguaje aguanta kilos de juniors rotando y managers vende humos picando código en horas extras. C? Python? Javascript? Go? Jajaja, me da la risa.

T

#16 de los demás no digo nada, pero del petardo de Dijsktra que dijo que el que programó en BASIC ya no puede programar en nada, vamos hombre, ni caso.

Lo que sí me llama la atención es que un curso de introducción a la programación se haga con matlab

ximovai

#32 "You probably know that arrogance, in computer science, is measured in nanodijkstras" Alan Kay

T

#33 Not until now, but I love it lol

Recuerdo ver una clase de él en video... qué coñazo y qué ideas erróneas. Pero como el profe era fan, todos calladitos lol

saqueador

#16 Pues el abuso de la procedural no te digo yo lo que produciría...

RamonMercader

#3 python para generar código spagueti es una maravilla.

D

#35 No se trata del lenguaje, sino de los programadores.

ximovai

#6 Una de las razones es el tipado dinámico?

T

#2 Python es muy bueno para aprender y coger buenas costumbres, además de poder ir escalando conocimientos fácilmente. Igual es más fácil TurboPascal, pero "te lo acabas", mientras que Python es un lenguaje más "completo".

aneolf

#2 ¿Qué entiendes por desarrollo pequeño?

https://www.tryton.org/
https://www.odoo.com/

D

#2 Si, yo he programado poco con él pero aunque puedes hacer cosas grandes lo suyo es para pequeñas aplicaciones, se hacen enseguida y es bastante divertido de programar.

h

#2 Dile lo de desarrollos pequeños a Youtube, Reddit, Instagram, Pinterest, Dropbox, parte de Google (de hecho tienen un compilador de Python a Go), Facebook (Tornado, la otra parte es php), Yahoo, etc

ElPerroDeLosCinco

#49 Cierto, pero me refiero al mercado español. No veo muchas ofertas de Python para clientes o proyectos grandes. Si alguien quiere aprender a programar buscando una salida profesional en España, no recomiendo Python.

h

#51 Llevo 5 años programando python en españa y te aseguro que hay muchas ofertas de python, incluso de lenguajes como ruby y además hay menos gente que sabe python que gente que sepa php o java así que tienes menos competencia.

Aparte python te sirve para muchas ramas no sólo desarrollo web... pero bueno, que cada uno aprenda lo que quiera.

ElPerroDeLosCinco

#53 Bueno, si tú estás metido en el mundo Python, sabrás mejor que yo cómo está el mercado y las salidas que tiene. Al césar lo que es del césar y a dios muy buenas.

D

#49 la gente entiende por "desarrollo pequeño" un "lo hago out-of-the-box"....o un "con 10.000 clientes me vale" no se dan cuenta que el C, Java, Python, ShellScript, y demás, siguen ahí dando guerra en cuanto algo requiere rendimiento de verdad...

charangada

#1 Python es la base de los mejores sistemas de Machine Learning actuales. Hay mucha demanda en el mercado y un repunte de salarios importante.

aironman

#21 para prototipos, cuando quieras algo con necesidades reales de rendimiento y quieres algo mantenible, scala y java. En stratio no trabajamos con python más allá de que alguien haga un prototipo y porque conoce el lenguaje. Si llega a producción es porque hay que reescribirlo a java o scala.

S

#66 En stratio como accedeis a la GPU desde scala o java para correr modelos de deep learning?

aironman

#69 hum, me pillas ahí, tendría que preguntar, yo curro como arquitecto software/data engineer/developer java y scala. Me imagino que los compañeros que gestionan sistemas se encargarán de configurar los clusters para que usen las gpus. Cuando programamos, asumimos que el hardware está optimizado cuando llega a producción.

En principio nosotros desarrollamos el software y otras empresas se encargan de ponerlo en producción en sus clusters. Algunos clientes tienen sus propios clusters, otros quieren que se lo demos mascadito en AWS/Google cloud/Azure. Se que esos clusters suelen estar gestionados con nuestro software, es decir, modificaciones adhoc de DC/OS, aportamos código al proyecto DC/OS, mis compañeros data scientists escriben algoritmos machine learning/deep learning para spark, se los proponemos a databricks y ellos deciden si entran o no en la rama, algunos otros se venden para otros clientes pero no quieren que la competencia tenga acceso a ellos...

Si te interesa, envíame un mensaje, sé que están buscando talento

S

#72 Mi pregunta va en el sentido que desde librerias de ML como Tensorflow el utilizar las GPU o CPU segun tarea es trivial (una linea de código) y plataformas tipo H2O o Google Cloud tiran hacia python para correr modelos ML.

Ni idea de como enviarte un privado

Pero es bueno oir que existen empresas como Stratio, en lo que conozco de Barna el panorama esta más vacio.
Precisamente estoy por volverme de la gestión / capa funcional al desarrollo, pero si lo hago intentaré que sea hacia java/scala + ml.

D

#1 Por lo popular que es python, ni más ni menos.

ElperrodeloscincoElperrodeloscinco Python es de lo mejor que hay... y te recuerdo que es extensible, así que lo de pequeño y grande.... creo que no es el punto clave, si no el "para qué" y "cómo" ...

https://stackoverflow.com/questions/366980/what-are-the-differences-between-perl-python-awk-and-sed

MEV

#1 porque tiene muy buen soporte para Machine Learning, y ML es "el hype" de turno, además de ser un buen lenguaje para aprender a programar.

S

#65 Bueno es el 'hype' y lo va a ser más,
el objetivo de la informatica es reducir costes
y la ML ya esta demostrando como se carga trabajo semi cualificado (scoring de La Caixa, reclamaciones de Morgan Stanley).

Esto acaba de empezar...
ya tenemos por ahí varios sistemas de Scaffolding +ML (comandos de voz a código, borradores de frontend a código, ...).
Quizas el ML incluso matará al programmer star?

ximovai

#15 Mejor aprender Kotlin antes que Java

D

#18 #11 Una vez aprendido lo básico, variables, funciones, bucles, condicionales, arrays, además del tema de clases, métodos y objetos. Ya para meterte en otro lenguaje es coser y cantar. Se podría decir otro, pero de Java hay muchísimos tutoriales y facilidades para empezar desde casa y como hobby.

S

#18 Razones para aprender kotlin?

ximovai

#71 Google está apostando fuerte por él para Android y es también un gran lenguaje para backend.
https://developer.android.com/kotlin/index.html

misato

#15 uff a día de hoy yo usaría antes Kotlin que Java si es para Android

D

#24 Lo puse para aprender lo básico. Ya después uno tira por donde quiera.

misato

#26 Ya, pero es que yo aprendería lo básico directamente con Kotlin si tu objetivo es luego hacer cosas con Android lol

Treal

Para alguien ducho en hardware que simplemente quiera adquirir unos principios basicos (basicamente para ver si le pica el gusanillo al enano y poder enseñarle algo) ¿recomendariais alguno?

D

#11 Visual Basic.


No, es broma.
Se que se me van a echar encima pero yo considero útil el Java para aprender. Y cuando más o menos tengas claro lo de los objetos, métodos y clases te pasas al android para hacer cosas con el móvil.

Xtampa2

#11 No sé exactamente hasta donde llega lo de "ducho en hardware" pero si lo que significa es que sabes como funciona un ordenador internamente creo que lo que más vas a disfrutar es el de "Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)"

Treal

#22 basicamente estudie un grado superior en teleco y me he pasado los ultimos 20 años reparando ordenadores (ya sea de cambiapiezas o soldador en mano haciendo reparaciones en placas).

D

#11

1.- si quieres enseñarle lógica de programación, LO PRIMERO, enséñale algoritmos de ordenación. (

por ejemplo).

2.- De ahí, en cuanto lo hubiera comprendido, le llevaría a un lenguage tipo "BASIC" (ojo, no visual basic) o tipo "PASCAL" para que entendiera la nomenclatura de un lenguaje, el concepto de las llaves, los paréntesis etc.

3.- A partir de ahí, y cuando sepa hacer las cosas básicas, podrás empezar a contarle mucho más sobre cómo funciona la programación..

Treal

#58 bien, esto ya lo veo mas estructurado. Ahora me tocara empaparme del tema y buscar algun libro que me oriente despues a como "endulzarlo" para la mente de un niño. Luego poco a poco ir escalando. Gracias!

Shelu

Yo he hecho el de Machine learning de la Universidad de Stanford, y es gratuito sin el certificado, si lo quieres pagas un precio módico por él, después acabé haciendo los cursos especializados de deeplearning.ai, entre ellos Neural Networks and Deep Learning que aparece como avanzado, y hay que pagar mensualmente por la subscripción alrededor de 40 pavos.

En mi opinión la relación calidad/precio es estupenda, pero no son "gratuitos".

r

Los 40 mejores cursos online gratuitos de programación

> CS50’s Introduction to Computer Science
> Introduction to CSS3
> Networking: Introduction to Computer Networking
> Cryptography I
> Bitcoin and Cryptocurrency Technologies

Ajam. Errónea.

Ferran

Gratuito al 100% y en español: https://platzi.com/programacion

I

Hay cursos con 5 opiniones. No me parece una masa crítica suficiente para meterlos en una lista de los mejor valorados.

Si os fijáis todos los cursos avanzados tienen pocas opiniones. Seguro que son familiares y amigos

K

#34 Hice unos cuantos de esos y me parecieron bastante buenos.

Introduction to Artificial Intelligence from Stanford University ★★★★☆(24)
Neural Networks for Machine Learning from University of Toronto ★★★★☆(22)
Probabilistic Graphical Models 1: Representation from Stanford University★★★★☆(17)

I

#41 Yo también he hecho el primer curso y el de Machine Learning de Andrew Ng.

Ambos muy chulos, pero no son de programación.

D

Miro uno que me interesa: 7 dias de prueba. "Gratuitos".