Como empezar en programación

Iniciado por soplo, 23 Mayo 2004, 08:12 AM

0 Miembros y 1 Visitante están viendo este tema.

soplo

Hola
Escribo este texto como orientación a todas las personas que desean iniciarse en el mundo de la programación y no saben por donde empezar:

--------------- CONSIDERACIONES PREVIAS -------------------
1. Un buen programador no solo conoce "lenguajes de programación". Conoce en profundidad el sistema operativo para el que trabaja y si programa aplicaciones cliente/servidor también conoce como funcionan las comunicacioens entre ordenadores.

2. Un buen programador conoce varios "lenguajes de programación" y decide en cada caso la mejor forma de "atacar" el problema.

3. Un buen programador sabe lo importante que son los "fundamentos informáticos". Cuando estudias te enseñan algoritmos, estructura de la información y conceptos como por ejemplo 'estructura de una base de datos sql' que a mucha gente le parecen una tontería. Pues esas "tonterías" son FUNDAMENTALES.

----------------- ¿QUÉ LENGUAJE DEBO APRENDER? -------------
Pues eso depende. Por que cada lenguaje tienen unas ventajas y unos inconvenientes. Por tanto la respuesta a esa pregunta es ¿Qué es lo que quieres hacer con la programación?

1. Quiero hacer aplicaciones que gestionen bases de datos.

    En este caso tendrás que conocer la base de datos que   
    pretendes atacar. Hoy en día las bases de datos mas
    usuales son (en orden de importancia) access, mysql,
    informix, sql server, oracle.

   Access se utiliza en entornos muy pequeños en un entorno
   windows. Generalmente son aplicaciones monousuario y
   muy limitadas.

   Las otras son bases de datos sql multiusuario. Suelen ser
   bases de datos remotas a las que accedes como cliente por
   lo que tendrás que conocer la base de datos y dominio de
   técnicas de programación cliente/servidor.

   Generalmente estas bases de datos funcionan en entornos
   de servidor Unix/Linux por lo que a menudo los clientes
   accederán a ellas mediante un servidor WEB instalado en el
   servidor. En un entorno de servidor Unix/Linux te interesa
   por tanto conocer PHP y javascript para consultar de forma
   remota esta base de datos.

   Caso aparte es SQL Server que funciona en servidores
   windows y por tanto para acceder de forma óptima a estos
   datos deberías pensar en ASP y VbScript en vez de en PHP
   y javascript.

   Habitualmente estas bases de datos son atacadas por
   varios usuarios a la vez por lo que tendrás que conocer
   técnicas de programación de Cliente/Servidor  y
   funcionamiento de comunicaciones entre ordenadores.

2. Quiero hacer aplicaciones tipo antivirus, firewalls,
   dreamweaver, photoshop, ...

   Estos programas se realizan en C++ y Delphi

3. Quiero hacer aplicaciones para internet.

   En este caso debes conocer PHP, javascript o bien ASP,
   VbSCript y desde luego HTML. PHP y javascript es mejor
   para acceder a servidores Unix/Linux. ASP, VbScript es
   mejor para acceder a servidores Windows. Esto no quiere 
   decir que con PHP no se pueda acceder a una base de datos
   sql server en un servidor Windows. Eso sería falso. Se
   puede.

4. Quiero hacer aplicaciones de tipo Sistema Operativo.

   Este tipo de aplicaciones se realizan en C++ y ensamblador.

----------- CONSIDERACIONES ADICIONALES ---------------
En general se puede decir que las cosas de Microsoft funcionn mejor con lenguajes de Microsoft. Se integran mejor y con menos esfuerzo consigues mejor resultado. Aunque a menudo hay mejores opciones en el mercado el mundo microsoft "pesa mucho" y se encuentran multitud de servidores y soluciones pensadas por y para microsoft.

Los Servidores Unix/Linux Son mejores y mas estables por lo que están muy extendidos. Por ello lenguajes como PHP y javascript son una muy buena opción.

Lo mismo se puede decir en el mundo Solaris. Java es una opción a tener en cuenta.

---------------- POR ULTIMO ------------------------
Para conseguir un empleo no te valdrá conocer catorce lenguajes. Un posible puesto de trabajo puede requerir conocimientos de visual basic+ASP+SQL SERVER. Si conoces esto tienes trabajo seguro.

Si conoces ORACLE tienes trabajo seguro.

Conocer HTML+PHP+javascript y una base de datos sql (empieza por mysql)  es una buena opción para desarrollar páginas web.

Mucha gente cree que la programación cliente/servidor supone saber manejar los sockets. Pues sí, hay que saber esto, pero también como funciona la red, como van a moverse los paquetes por la red, si ejecutar un procedimiento en el servidor o en el cliente, si se van a hacer réplicas de datos, como van a funcionar los bloqueos, Que pasará ante procesos concurrentes, ...

Callar es asentir ¡No te dejes llevar!

soplo

Hola
He olvidado un aspecto importante: todos habreis oído hablar de .NET.

.Net es un conjunto de lenguajes de reciente creación y que van a dejar obsoletos todos los demás lenguajes (de microsoft).

Por ello es posible aprender visual basic.net, asp.net, c#.

Aunque suenen a lenguajes conocidos hay que pensar que son 'otro lenguaje diferente'. El hecho de que conozcas visual basic 6.0 no te garantiza que sepas nada en visual basic.net.

En realidad todos ellos son un mismo lenguaje llamado ADO.net framework. Cuando para un empleo te piden que conozcas ado.net te están pidiendo que conozcas el motor común de todos esos lenguajes.

Cuando escribes un lenguaje visual basic.net utilizas unas órdenes que son oportunamente traducidas a rutinas ado.net por el compilador.

Cuando utilizas asp.net igual.

Estos lenguajes son importantes porque son la apuesta de futuro de microsoft en cuanto a programación y podeis dar por sentado que en los próximos años quien quiera accede cómodamente a información situada en un servidor windows deberá conocer .net.
Callar es asentir ¡No te dejes llevar!

soplo

Hola
El caso anterior estaba pensado para la gente que quiere dedicarse a la programación como profesión y trataba de orientar con vistas a un futuro profesional.

Sin embargo he pensado que también otras personas mas jóvenes  que tienen ganas de aprender y aún no saben en lo que quieren trabajar ni que carrera estudiarán (si lo hacen) pueden tener interés en aprender a programar.

De forma que voy a explicarme un poco para ellos:

C
Es el gran lenguaje. Con C se puede hacer de todo y se puede hacer bien. Generalmente hacer algo en C requiere mas trabajo que hacerlo en otro lenguaje, pero al final es mejor.
Conocer fundamentos de C es una buena opción para todos los que se interesen en informática.
Es opensource.

C++
Con los años sobre la base de C hicieron otro lenguaje llamado C++ que es un C "modernizado". Tiene muchas ventajas en las que no voy a entrar, pero que merecen mucho la pena.
Conocer bien C++ es una muy buena opción, aunque a menudo se puede hacer "lo mismo" con menos trabajo en otro lenguaje ese "lo mismo" no es lo mismo. Con C++ se hace bien, con otro quizá si, quizá no.
Es opensource.

Visual Basic
Visual Basic ha sido durante años el lenguaje estrella de microsoft. Tiene la ventaja de que se integra perfectamente en windows y permite hacer muchas cosas con poco esfuerzo. Tiene de malo que tiende a introducir malos hábitos en programación.
Visual basic es indicado para realizar aplicaciones por y para microsoft.

Delphi
Es el gran competidor de Visual Basic. Comparativamente es mejor, pero tiene la desgracia de competir con visual basic que es de microsoft y pasa lo que pasa siempre cuando se compite con microsoft.

Java
Es un muy buen lenguaje para realizar aplicaciones cliente/servidor.
Es de Sun.

Html
Es un lenguaje sencillito y fácil de aprender. Imprescindible para aprender a programar en internet.
Es opensource.

ASP
Es otro lenguaje de microsoft. Sirve para generar instrucciones que serán ejecutadas por un servidor web (Para internet/intranet por tanto).  Por ejemplo yo hago una página que busque en una base de datos una determinada información y se genera una página. ASP es un lenguaje en que se hace esto y se suele utilizar sobre servidores microsoft.

PHP
Es el gran lenguaje competidor de ASP. Es mas potente y es opensource. Se integra bien con todo aunque "lo suyo" es mysql y apache.

VBScript
Es un lenguaje para la programación de scripts de Microsoft. Se suele integrar en páginas donde una parte la debe realizar el servidor (por ejemplo la búsqueda) y otra parte se debe realizar en mi ordenador (por ejemplo el menú y las acciones a realizar según me desplazo, ..., etc). Es normal hacer páginas con la combinación asp y vbscript.

javascript
Es el gran competidor de VBScript. Suele formar pareja con php de manera que en una página se utilizan ambos. Con php indico las acciones que debe ejecutar el servidor, con javascript indico las acciones que debe ejecutar mi servidor para que la página funcione adecuadamente.

PERL
Cada día mas en desuso permite realizar aplicaciones cgi que se ejecutan en un servidor web en una carpeta aparte lo que proporciona una mayor seguridad. Es opensource.

Ensamblador
Cuando no había otros lenguajes la única forma de realizar un programa era hacerlo en ensamblador porque se habla "directamente" con el procesador.
Hoy en día se utiliza muy poco (solamente para algunas rutinas de muy bajo nivel o que requieran una extrema rapidez).

Seguiré poniendo según se me vayan ocurriendo
Callar es asentir ¡No te dejes llevar!

soplo

En resumen:

Si tienes interés en aprender a programar en internet debes aprender:
1. html en cualquier caso
2. La combinación asp y vbscript o bien la combinación php/javascript (mejor)
3. Alguna base de datos relacional (empieza por mysql)

Si tienes interés en aprender a programar aplicaciones de tipo consola o en linux debes aprender C.

Si tienes interés en aprender a programar aplicaciones windows puedes aprender visual basic, delphi o c++

Un saludo
Callar es asentir ¡No te dejes llevar!

Hack.MATRIX


Madre mia, y pensar que tengo que aprender html, php y javascript...no se ni por donde empezar!!  :-\ , menos mal que el html es sencillo, pero cágate con los otros
LA MEJOR DEFENSA ES UN BUEN ATAQUE


Now this looks like a job for me
so, everybody just follow me
cause we need a little controversy
cause it feels so empty without me

soplo

Hola
El-brujo ha creado un subforo de 'ejercicios' dentro de programación.

En él iremos poniendo ejercicios en diversos lenguajes abarcando distintos temas y con creciente dificultad. Si tienes interés en aprender ese es un buen lugar porque puedes hacer ejercicios apoyado por personas que saben como resolverlos.
;D

¡Ya me hubiera gustado aprender a mí así en vez de pasarme horas delante de una rutina sin entender porque no funcionaba!

::)
Callar es asentir ¡No te dejes llevar!

oscar osz

Lo que dice soplo, si es cierto, en años anteriores sufría uno demasiado con una rutina y no existía tanta información como en la actualidad, asi es que los interesados en aprender programacion actualmente en el mercado hay una extensa informaciòn que con todo ello facilita su aprendizaje, solo hay que elegir correctamente un solo lengaje y darle continuidad para no hacerse pelotas, de igual forma invito a que antes de inciar con cualquier lenguaje es importante echarle un vistazo a temas como: ¿que son los algoritmos?, programacion estructurada, analisis y diseño, lógica moderna o lógica tradicional, ... saludos   

TheNewNazgul

wenas!!! espero no rayaros con una posible pregunta q siempre os hacen pero como puedo empezar a programar , es decir, m podriais enumerar los lenguajes que primero necesito aprender y cuales despues?
para aprender lo mejor son tutoriales no?
saludos wena gente  ;)

X-P

Saludos a todos:

Soy un nuevo usuario de este foro y aunque ulitmamente me estoy  interesando mucho por la seguridad informatica mi  vocacion ha sido y sera siempre la programación. 

Desde que he empezado a visitar este foro mis conocimientos estan haciendose mayores muy rapidamente, por tanto, quiero aportar todo lo que pueda a esta magnifica comunidad. Al tema:

Muy buena la introducción, pero creo hay un par de cosillas con las que no estoy del todo de acuerdo. No pretendo saber mas que nadie, tan solo yo lo veo de otra manera .

Nada que decir de las CONSIDERACIONES PREVIAS,  es un problema que he visto incluso en "programadores profesionales" , o sea que se ganan la vida con eso y  estas deficiencias "teoricas", hacen que producan un código realmente caotico y en demasiadas ocasiones redundante , inefectivo desde un punto de vista de rendimiento y horrorosamente dificil de mantener y depurar.

¿ Porque php-javascript o asp-vbscript ? No he trabajado nunca con vbscript pero si con asp....

Delphi es una herramienta de desarrollo rapido de aplicaciones para programar en pascal.

Cita de: Duffman

En realidad todos ellos son un mismo lenguaje llamado ADO.net framework. Cuando para un empleo te piden que conozcas ado.net te están pidiendo que conozcas el motor común de todos esos lenguajes

Esto no es correcto. El .Net Framework es un modelo de programacion que facilita mucho el desarrollo de aplicaciones, el cual incluye una maquina virtual ( como la de java ) y unas bibliotecas de clases. Teoricamente puedes utilizar cualquier lenguaje que pueda ser compilado a codigo intermedio (MSIL).
La gracia esta precisamente en que puedes utilizar codigo creado en un lenguaje desde otro y en todos tendras un marco de desarrollo común.

ADO .NET es una arquitectura de accesos a datos, dentro de la plataforma .NET. Una evolucion del antiguo ADO.

Y para terminar mas lenguajes:

LISP

"LIStProcessing" es un lenguaje un tanto atipico utilizado a menudo en la inteligencia artificial.

PYTHON

Muy parecido a perl pero mas sencillo, un lenguaje muy sencillo pero muy poderoso. Creo que es un buen lenguaje para iniciarse. Y no solo para eso, las posibilidades son muy grandes aunque es interpretado... como VB

Aun se me ocurren muchos mas... COBOL, PROLOG, BASIC ( no solo de visual vive el hombre...  ;) ) JSP, JScript ( no es javascript ).... quien quiera extenderse que se extienda, yo tengo sueño....  ::)

Saludos a todos!


soplo

Bienvenido X-P

Agradezco tus comentarios. Solo decir que en este post no he mencionado la seguridad y eso es obviamente fundamental.

Pues solo decir para aquellos que lean esto que no conseguirán ser expertos informáticos en seguridad aquellas personas que no tengan sólidos conocimientos de networking y programación especialmente shell scripts, c++, ensamblador (al menos conceptualmente) y demás.

Así me pasó a mi, que una vez un energúmeno publicó un exploit que a mi me pareció bueno y cuando lo vió Don RojoDos resultó ser un fake de caballo ja ja ja

Un saludo
Callar es asentir ¡No te dejes llevar!