Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Debates
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2012
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
En que programar?

Hola, soy estudiante de analista de sistemas, estoy en segundo año, me falta un año para terminar.
Actualmente estoy programando todo en delphi, y muy poco de base de datos, puros DER hacemos en clase.

Les queria hacer una consulta, hoy estube en una libreria, y vi un libro de User sobre Java, al lado uno de C++, otro de php, MySql, y alguno mas que no recuerdo, me llamo mucho la atencion el de java porque es de lo que todo el mundo habla sobre programar, pero me gustaria saber las diferencias entre cada uno de estos lenguajes, y para que conviene cada uno, estoy en una etapa de que nose bien lo que quiero programar, pero lo que si sé es que kiero programar.

Por mi carrera solo vimos delphi hasta ahora, nose que veremos en tercer año, pero por si acaso algo de esto queda afuera del temario, me gustaria ir conociendolo y aprendiendo.

Me gustaria comprarme un libro de estos o similar y empezar a aprender y descubrir de que se trata, pero el tema es que nose bien la diferencia entre ellos.
Hablan de VB.net, VB, php, intregrado con MYsql, por otro lado SQL solo.

cualquier ayuda es bienvenida, pero estoy seguro que me van a lograr ayudar porque hasta ahora no me han defraudado, un lujo el foro!!!!

muchas gracias!! y disculpe mi ignorancia
Responder Con Cita
  #2  
Antiguo 19-09-2012
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
JavaScript me quedo sin nombrar, hay muchos nombres raros!
Responder Con Cita
  #3  
Antiguo 19-09-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¡No te conformes con un libro! Ni tampoco con un lenguaje.
Responder Con Cita
  #4  
Antiguo 19-09-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
En terminos generales, es bueno aprender mas de un language (de hecho diria que es fundamental para volverse buen programador).

Pero es importante saber mezclarlos. No tiene mucha gracia aprender Java y C# (muy parecidos). Es mejor aprender lenguajes opuestos, o que te introduzcan a formas muy diferentes de hacer las cosas.

Por ejemplo, luego de usar Delphi, empeze con python: http://www.python.org/. Delphi y python son muy diferentes, pero complementarios.

Con Delphi, aprendes mucho sobre estructuras estaticas, la importancia de predefinir todo y de usar lenguajes estaticos y compilados, ademas de RAD. Python es inverso: Es dinamico, es scripting, es definir por codigo y no por IDE.

Otros combos interesantes para combinar con Delphi:

Haskell: http://learnyouahaskell.com/

Te quita el concepto de la programacion OO y te introduce a su opuesto natural: Programacion funcional

C# o Java: Para conseguir un trabajo

Ruby: Metaprogramacion y magia. El opuesto en estilo de python, tirando mas a lenguaje funcional. Muy popular entre desarrolladores web

Go (http://golang.org/): Programacion multi-hilos, mas simple.

------
Pero es ideal saber manejar bien uno primero antes de aventurarse a aprender los demas. Lo que aprendes en la U tiende a ser una muy escueta introduccion a la programacion, y hasta que no desarrolles software no vas a enfrentarte a los desafios necesarios que construiran la experiencia que necesitas para poder realmente decir que sabes programar.

Asi que yo empezaria por saber a donde te quieres enfocar, y un proyecto X en concreto. Luego ejecutarlo y terminarlo.
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 19-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
C# o Java: Para conseguir un trabajo


¿De plano es su única virtud?

// Saludos
Responder Con Cita
  #6  
Antiguo 19-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esa ha sido buenísima
Responder Con Cita
  #7  
Antiguo 19-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
Otros combos interesantes para combinar con Delphi:

Haskell: http://learnyouahaskell.com/

Te quita el concepto de la programacion OO y te introduce a su opuesto natural: Programacion funcional
Y esto, ¿no es como un retroceso? ¿De qué va este haskell? ¿Es similar a lisp? ¿En qué áreas se usa?

// Saludos
Responder Con Cita
  #8  
Antiguo 19-09-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Y esto, ¿no es como un retroceso? ¿De qué va este haskell? ¿Es similar a lisp? ¿En qué áreas se usa?

// Saludos
Retroceso en que?

Algo que me tomo tiempo entender es que no existe una linea ascendete tipo:

Programacion Imperativa < Estructural < Objetos

Sino familias de lenguajes. Por lo tanto, no hay retroceso en pasar de una familia a otra (algo que hacemos todo el tiempo, por ejemplo al usar un lenguaje declarativo como SQL o HTML).

La programacion funcional es la OPUESTA a la orientada a objetos. En OO se tiende a enfatizar todo en el sustantivo, mientras en la funcional en el paso de datos.

La primera vez que entendi la diferencia fue leyendo:

http://steve-yegge.blogspot.com/2006...-of-nouns.html

P.D: Al igual que todo "estilo", la programacion funcional puede ser incorporada en otros lenguajes que son OO, y la OO se puede introducir en otros lenguajes no OO (como por ejemplo, cuando se simular OO en C).

Esto significa que no hay que sacrificar -del todo- la herramienta que conozco ahora, por una totalmente diferente.

Un ejemplo simple, en python (python es multi-paradigma: OO, procedural, funcional, imperativo):

Tradicional, imperativo (con efectos colaterales):
Código PHP:
amigos = ['a','b','c']

amigos.sort()

for 
amigo in amigos:
    print 
amigo.upper() 
Funcional (sin efectos colaterales):
Código PHP:
amigos = ['a','b','c']

[
amigo.upper() for amigo in sorted(amigos)] 
Una buena discusion de cuando se usa un estilo u otro:
http://stackoverflow.com/questions/2...ed-programming

La programacion funcional ha sido casi siempre un "nicho" oscuro, ppalmente porque sus proponentes son muy de la academia y meten una terminologia y casos de usos muy cienti/matematico/esoterico que es dificil de resonar con el programador promedio, pero ultimamente sus conceptos mas utiles se han ido pegando en varios lenguajes. Por ejemplo:

Soporte a Closure y funciones de primero orden

Uso de funciones anonimas / lambdas

Tambien han ido surgiendo lenguajes como F#, Scala, Clojure que tiene un punto de vista mas "normal" de la programacion funcional y que como corren sobre un runtime como .NET/Java permiten importar codigo OO.
__________________
El malabarista.
Responder Con Cita
  #9  
Antiguo 19-09-2012
Avatar de Julián
Julián Julián is offline
Merodeador
 
Registrado: may 2003
Ubicación: en mi casa
Posts: 2.019
Poder: 10
Julián Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Código PHP:
amigos = ['a','b','c']

amigos.sort()

for 
amigo in amigos:
    print 
amigo.upper() 
Funcional (sin efectos colaterales):
Código PHP:
amigos = ['a','b','c']

[
amigo.upper() for amigo in sorted(amigos)] 

Y ¿Cuales son eso efectos colaterales?
Y por cierto, el segundo ejemplo parece mucho mas retorcido, en el peor sentido, que el de php.

Un saludo!
__________________
"la única iglesia que ilumina es la que arde"
Anonimo
Responder Con Cita
  #10  
Antiguo 19-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Julián Ver Mensaje
Y por cierto, el segundo ejemplo parece mucho mas retorcido, en el peor sentido, que el de php.
Me parece que ambos ejemplos están en python.

// Saludos
Responder Con Cita
  #11  
Antiguo 19-09-2012
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
ajam, todo muy bien, pero sigo sin saber las diferencias claves en los lenguajes ..muy buenos aportes de todas formas
Responder Con Cita
  #12  
Antiguo 19-09-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Julián Ver Mensaje
Y ¿Cuales son eso efectos colaterales?
http://docs.python.org/howto/functional.html

Cita:
In a functional program, input flows through a set of functions. Each function operates on its input and produces some output. Functional style discourages functions with side effects that modify internal state or make other changes that aren’t visible in the function’s return value. Functions that have no side effects at all are called purely functional. Avoiding side effects means not using data structures that get updated as a program runs; every function’s output must only depend on its input.
El efecto colateral es este: amigos.sort()

Supongamos que el codigo que puse (ambos son python, pongo etiqueta PHP por los colores, ya que no hay para python) fuera una funcion:

Código PHP:
def listarAmigos(amigos):
    
amigos.sort()

    for 
amigo in amigos:
        
yield amigo.upper()


amigos = ['b','a','c']

print list(
listarAmigos(amigos))
>> 
RESULTADO: ['A''B''C']
print 
amigos
>> RESULTADO: ['a''b''c'
Como ves, al invocar listarAmigos ocurrio un efecto colateral: La funcion altero los datos/objetos.

En la programacion funcional se busca que con la MISMA entrada ocurra EXACTAMENTE, SIEMPRE, la MISMA salida. Esto ayuda a que el programa sea mas confiable, correcto y sin sorpresas inesperadas.

O en otras palabras, se busca la inmutabilidad de los datos, y se prefiere retornar copias nuevas de los datos transformadas por funciones.

En forma funcional:

Código PHP:
def listarAmigos(amigos):
    for 
amigo in sorted(amigos):
        
yield amigo.upper()


amigos = ['b','a','c']

print list(
listarAmigos(amigos))
>> 
RESULTADO: ['A''B''C']
print 
amigos
>> RESULTADO: ['b''a''c'
No se altero la estructura inicial (amigos).

Los efectos colaterales son causas de muchos errores y dificultad en depurar los programas, porque en cualquier momento, una estructura cambia su significado e informacion al ir pasando de un lado al otro, y el manejo del estado se debe chequear manualmente (recordar que si paso un objeto mutable lo que envie me puede devolver algo inesperado).

Cita:
Functional programming can be considered the opposite of object-oriented programming. Objects are little capsules containing some internal state along with a collection of method calls that let you modify this state, and programs consist of making the right set of state changes. Functional programming wants to avoid state changes as much as possible and works with data flowing between functions. In Python you might combine the two approaches by writing functions that take and return instances representing objects in your application (e-mail messages, transactions, etc.).
Por lo tanto, se puede decir que OO es manipular maquinas de estado, donde cada "palanca" y "boton" representa un conjunto de datos y operaciones diferentes, mientras en funcional, cada funcion representa una transformacion de datos.

En OO se puede llegar a cosas raras como:

Código PHP:
class BD:
    
conexion = ...
    
esActivo false

    def open
(self):
        
self.conexion Conexion()
        
self.esActivo true

    def consulta
(selfsql):
        
#Esto es un error en potencia. El significado
        #de consulta depende de que previamente se abra
        #la conexion! Se debe colocar guardas
        
return self.conexion.ExeSql(sql)
        
#Ok, una guarda        
        
if self.esActivo:
            
#El colocar una guarda NO garantiza la ejecucion! El estado esta desconectado de los datos!
            
return self.conexion.ExeSql(sql)

bd = new BD()

bd.open()

#ERROR. No hay garantia del manejo de estado, sin 
#programacion cuidadosa
bd.conexion None

print bd.consulta("SELECT 1"
Este es un ejemplo de como los estados con efectos colaterales complican la programacion y generan potenciales errores.
__________________
El malabarista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Programar .Net kman Varios 0 01-09-2006 03:49:08
Programar un telefono mauriciofox Internet 3 05-12-2004 22:11:16
Programar una PDA marcial Varios 5 02-10-2004 19:39:41
Programar con Paquetes PKG brandolin Varios 1 10-08-2004 03:37:08
Programar el puerto usb el toluca Varios 0 30-06-2004 20:33:17


La franja horaria es GMT +2. Ahora son las 14:45:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi