UTNianos

Versión completa: Selección de lenguaje para Proyecto
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Por cuestiones laborales me aleje de la programación y ya termine todas las materias referidas al tema de la carrera, pero por si solas, no te enseñan demasiado.
Ahora bien, para la materia de proyecto tenemos algunas ideas pero nadie en el equipo programa, y yo me ofrecí para incursionar en el tema, por lo que les pido ayuda para comparar distintos lenguajes / plataformas de desarrollo, buscando POO, entre .Net, PHP y JAVA, pueden darme sus opiniones personales de cual es mejor y porque?

(Este post o muere sin respuesta o termina en un debate sin fin, pero me va a servir cualquier respuesta)
Mira
Antes que nada hay que definir que se va a hacer. De ahi en mas se podra ver el lenguaje. Supongo que sera Web no?
No puedo definir exactamente el proyecto porque hay varios dando vuelta, pero si, en principio todos son web y tiene que interactuar con una base de datos relacional, mucha mas info por el momento no puedo proveer, estoy buscando una orientación de por donde arrancar
y............. si no tienen ni idea, .Net sale bastante rapido y se aprende bastante mas facil que Java. Igual van a tener que tocar codigo a pleno...
No se que si sabes
Yo por simplicidad me la juego por PHP a full
adhiero con lo de php para la web, es lo mas simple.
Disagree, depende para qué, mantenibilidad, testabilidad, desarrollo en equipo, skills de los developer, requerimientos de interoperabilidad, etc.

Si tengo que opinar creo que lo más fácil es ASP.Net standard, no MVC (para MVC hay que saber más). Con ASP.Net standard sin saber NADA podés sacar andando cosas muuuuy rápidamente, obviamente suponiendo que tu objetivo es aprobar proyecto y no hacer el mejor y más performante sitio web de tu vida.

Realmente no entiendo por qué PHP sería mejor para alguien sin conocimientos de programación... tenés que entender mucho más para laburar decente en PHP... ASP.Net te simplifica infinitas cosas si no tenés skills de desarrollador. Más allá del IDE que es un caño.
A mi me da la sensación que la parte de objetos de PHP está un poco verde. Para algo bien objetoso yo diria .NET o java. Personalmente yo hice algunas cosas en java con jsp y jsf, y sale bastante facil. Con jsf en particular sale como piña, es muy facil armar la interfaz. Y si encima le agregas ajax ni hablar. Si fuera yo elegiría java pero es cuestión de gustos nomas.

En conclusión, cualquiera que elijas tiene sus pros y contras.
PHP no tiene...
Spoiler: Mostrar
SOBRECARGA DE METODOS

Con un visual studio arrastras componentes y sale en dos patadas. De nuevo, seguramente armes un proyecto y si viene un flaco que sabe .net tiene convulsiones de lo horrible que te quedo (hablando de arquitectura y cosas asi), pero lo sacas en una patada =P.
En mi grupo de proyecto usamos PHP con el framework CakePHP, que veíamos que era muy recomendado (nadie lo conocía de entrada). De todas formas de los 5 terminamos programando 3, uno la parte de Flash y el otro y yo, la parte de PHP / JavaScript (obviamente ni Flash ni JS es necesario para un proyecto estándar con CakePHP). Personalmente, mientras menos manos toquen, mejor (pero no un solo, si no se vuelve demasiado laburo y cuando rindas otra materia el proyecto queda en pelotas).

El framework al principio rompe un poco las bolas, porque uno quiere hacer todo a su manera, pero después te simplifica la vida (como la idea de casi todo FW) y sacás código funcionando bastante rápido.

Eso le da bastante mantenibilidad, y puede impactar algo negativamente en la testabilidad (al usarse un FW, uno ya no ve que es lo que hace esa parte por un tema de abstracción, pero si tenés un problema a veces cuesta detectarlo más que si todo lo hubieras escrito vos).

En general, los cambios que decidíamos se podían hacer fácil. El mapeo de los objetos con la base de datos es on-the-fly, por lo cual no tenés que tocar prácticamente nada de eso (sí tenés que indicar las relaciones entre los objetos como en los ORM más comunes, pero suelen ser cosas que casi nunca volvés a tocar).
Se pueden hacer casos de prueba pero la posta es que es mucho más fácil hacer un cambio en PHP y ver al toque el cambio en el browser (ya que no necesitás recompilar, eso hace que el desarrollo sea más rápido y no des tantas vueltas para cada cambio). Obviamente, los cambios pueden impactar en otros módulos y ahí los casos de prueba resultan útiles, pero sinceramente no los usamos.

PHP, por otro lado, te da un deploy mucho más sencillo. O sea, deployar es copiar y pegar archivos. No necesitás un IDE muy pesado si no querés (aunque recomiendo Eclipse) porque el código de PHP no se compila, pero lo bueno es que podés tocar un archivo con un editor de texto cualquiera, guardar y notar los cambios de una (esto es porque a diferencia de .NET o Java, es un lenguaje interpretado). El tema de que sea interpretado es importante, porque por ejemplo, ningún IDE (entorno de desarrollo) te va a decir los métodos que tenes en las clases propias que definiste (o al menos nunca vi algo tan zarpado), lo cual es una contra.

De hecho laburo en .NET, pero desde el laburo y con escritorio remoto (o mismo con el SVN) podía tocar el código PHP y probarlo mientras esperaba la compilación de un proyecto del trabajo, por ejemplo =P. Programar en .NET sería un poco más pesado (pero reconozco que si no saben NADA De HTML, puede venir muy bien).

También hay que tener en cuenta que acá hacés una aplicación que probablemente no sigas después de firmar proyecto (dado el perfil de los integrantes, digo), por lo cual la extensibilidad de la app (cuánto puede crecer) o el mantenimiento a largo plazo no te preocupa demasiado. Como un plus (o no, depende como se vea), la cátedra no revisa el código, por lo cual nadie te va a juzgar por cómo programes, por números mágicos, etc, si en un apuro lo necesitás (obviamente no recomendaría esto si quieren seguir con el proyecto luego).

Eso sí, la app tiene que hacer lo que ustedes dicen que hace, no vale dibujarla, porque se les va a complicar más y es probable que en las pruebas finales esos detalles se noten.

A nivel organización de equipo: si usan un SVN y se ponen de acuerdo con los que programan en quién hace qué, la organización ya avanza varios pasos. Pero recomiendo ampliamente que lo usen (y que aprendan si no saben usarlo). Esto lo va a necesitar todo el equipo, no solo los que programan, si no también para manejar el versionado de la documentación excesiva que se pide. Y obviamente, hay que aprender ciertas buenas prácticas para no perder mucho tiempo con la edición de los archivos (código o documentación).

Eso sí, para practicar un lenguaje deberían empezar ahora para no estar tan en bolas me parece. El proyecto generalmente se puede hacer en unos meses, pero dado el caso de ustedes, está bueno que recuperen parte de esa "experiencia perdida".
(26-11-2010 20:23)Adriano escribió: [ -> ]PHP no tiene...
Spoiler: Mostrar
SOBRECARGA DE METODOS

Pero tiene parámetros opcionales, que les puede resultar mucho más natural.
(26-11-2010 08:57)DreamDrums escribió: [ -> ]A mi me da la sensación que la parte de objetos de PHP está un poco verde. Para algo bien objetoso yo diria .NET o java. Personalmente yo hice algunas cosas en java con jsp y jsf, y sale bastante facil. Con jsf en particular sale como piña, es muy facil armar la interfaz. Y si encima le agregas ajax ni hablar. Si fuera yo elegiría java pero es cuestión de gustos nomas.

No sé si está tan verde, pero a mí también me da esa sensación de PHP =P.

De todas formas, no creo que les preocupe tanto hacer algo "objetoso". Quieren hacer el Proyecto y que salga andando =P... los que rompemos más con las buenas prácticas/purismo vamos a ser los que ya tenemos bastante experiencia en programación. Eso es muy difícil inculcarlo para un proyecto aislado.

Eso sí, con PHP, la interfaz hay que tocarla más a mano (sobre todo estilos) si querés que quede decentemente presentable.

De última, pueden usar WinForms en .NET (o sea, típica aplicación de ventanitas) que ahí es mucho más intuitiva la creación de la interfaz (mucho más tosca también).
Tocando un poco se puede utilizar sobrecarga de objetos en PHP.
Realmente es cierto que en PHP no esta tan linda la parte de objetos, y para llegar a usarlo al maximo hay que hacer un buen laburo atras.
Ahora salio PHP 6 que, en teoria, deberia laburar mejor en todo esto, aunque no llegue a verlo bien. Igualmente insisto en que hay cosas que me resultan sumamente simples en PHP y siento que me da una libertad muy amplia.

Pablo, el IDE que buscas se llama Zend, que junto al Zend Server aparte tambien te permite debuggear PHP, lo que antes, al no poder hacerlo, me era una gran contra

Off-topic:
Sí es verdad, una vez me instale zend pero se me hizo tanto bardo configurar el ide para debug que desistí. De todas formas al impactar los cambios de php al toque, se agiliza la prueba y error. Es como hacer printf`s en c pero sin necesidad de compilar, y no será muy ingenieríl pero generalmente te saca de un apuro =P.

Off-topic:
Jajaja, pase años llenando de echos y print_r(al que no lo conoce recomiendo concerlo) el codigo hasta que conoci el zend.
Otro nivel =P
+1 a cakePHP. Lo usé durante un tiempo en el laburo, y una vez que te acostumbras, casi te diria que es magia.

Si queres incursionar por el mundo de Python, te recomiendo Django... aunque tiene alguna que otra complicación si queres usar ajax.
URLs de referencia