2010-10-18 14 views
5

Voy a revelar mi ignorancia aquí, pero en mi defensa, soy especialista en contabilidad, y nunca he tomado una clase de ciencias de la computación.¿Qué hace que algunos lenguajes de programación sean más potentes que otros?

Estoy a punto de comenzar un nuevo proyecto, y estoy considerando usar Python en lugar de PHP, aunque soy mucho más hábil con PHP, porque he oído que Python es un lenguaje más poderoso. Eso me hizo preguntarme, ¿qué hace que un lenguaje de programación sea más poderoso que otro? Me imagino que javascript no es muy poderoso porque (generalmente) se ejecuta dentro de un navegador. Pero, ¿por qué Python es más poderoso que PHP? En cada caso, estoy dando instrucciones a la computadora, entonces, ¿por qué algunos idiomas son mejores para interpretar y ejecutar estas instrucciones? ¿Cómo sé cuánto "poder" realmente necesito para un proyecto específico?

+0

Esto es bastante subjetivo y es probable que inicie flamewars (como afirmar que Java es más poderoso que Python). En el mejor de los casos es material CW. – nmichaels

+3

posible duplicado de [¿Qué significa "potente" cuando se habla de lenguajes de programación?] (Http://stackoverflow.com/questions/3027593/what-does-powerful-mean-when-discussing-programming-languages) – JoshD

+0

I ' Tenga en cuenta que debe usar el idioma en el que es mejor a menos que desee dedicar el tiempo para aprender uno nuevo. Eres más poderoso con PHP, así que úsalo. – JoshD

Respuesta

8

Cuando Paul Graham habló sobre Lisp siendo el lenguaje más potente disponible, quiso decir el más expresivo. Puedes expresar cualquier programa en cualquier idioma completo. Ese es todo el punto. Lo que hace que un idioma sea mejor que otro (para una tarea en particular) es su capacidad para definir un programa determinado de forma más concisa o clara. Para la mayoría de las tareas de programación, eso es lo que importa.

Ocasionalmente (y me refiero muy ocasionalmente) el rendimiento comienza a desempeñar un papel, y las características como la capacidad de incrustar fácilmente el lenguaje ensamblador en el programa son importantes. Pero en su mayor parte, se trata de la capacidad de expresar sus ideas de forma clara y concisa.

+0

Supongo que esto es lo que esperaba averiguar. Me imaginé que en la mayoría de los casos las diferencias de poder de los lenguajes de programación tenían que ver con el rendimiento. Gracias. – smfoote

+0

También he oído decir que muchos patrones de diseño son soluciones para las características de idiomas que faltan, y yo tendería a estar de acuerdo. Todavía quiero una función macro para C#, aunque eso haría que completar el nombre sea un problema mucho más difícil. –

+0

@Jeff: no sé casi nada sobre el mundo de CLI, pero aparentemente el lenguaje [boo] (http://en.wikipedia.org/wiki/Boo_ (programming_language \)) corre en él y proporciona macros de estilo lisp entre sus muchas características. – intuited

4

Odio las afirmaciones del tipo "el lenguaje X es más poderoso que Y". La verdadera pregunta es qué idioma hace usted más poderoso. Si el lenguaje X le permite escribir un código mejor (que funciona) más rápido que Y, entonces, sí, X es más "poderoso".

Si está buscando una explicación objetiva del lenguaje poderoso-ness ... bueno, buena suerte con eso.

+0

+1. No hay un "lenguaje más poderoso", solo un lenguaje que mejor se adapta a ti. – refi64

4

No es realmente una cuestión de poder, sino una cuestión de lo que intenta hacer y cómo trata de hacerlo. Se podría decir que Python es "más poderoso" porque viene con un gran conjunto de bibliotecas integradas, o que C++ es "más poderoso" porque es mucho más rápido, o que Haskell es "más poderoso" porque usa evaluación diferida - en resumen, es realmente una cuestión de opinión. Pero no he visto muchas aplicaciones de escritorio escritas en PHP, y no veo aplicaciones web escritas en C++ (aunque probablemente haya excepciones, por supuesto).

Algunos idiomas simplemente ofrecen lo que se considera una forma "elegante" de realizar ciertas tareas. Por ejemplo, un vistazo a una función factorial en Haskell:

factorial 0 = 1 
factorial n = n * factorial (n-1) 

Algunos podrían considerar este elegante sobre todo porque refleja claramente la definición matemática. ¿Pero es esto mejor que otra implementación? No. (Especialmente porque esto desbordaría la pila.)

En conclusión, usa lo que crees que es mejor para tu tarea: si eres mejor con PHP, y no quieres aprender Python, entonces no lo harás. t. Si estás interesado en cómo es, entonces échale un vistazo. No lo aprenda porque es "más poderoso".

+0

hay idiomas que requieren que el traductor detecte y optimice la recursividad de la cola. por lo que el desbordamiento de pila puede no ser cierto para todos los idiomas. – alvin

+0

Tiene razón (y creo que Haskell es uno de ellos), pero mi punto principal es que la elegancia no es necesariamente útil o práctica. –

0

La respuesta estándar es que las únicas características que hacen que determinados idiomas sean más potentes que otros son las características del lenguaje que no se pueden reemplazar fácilmente agregando bibliotecas.

Esta definición casi siempre mostrará LISP en la parte superior, pero tiene el extraño efecto secundario de enumerar el ensamblaje cerca de la parte superior a menos que se tenga especial cuidado de excluirlo.

1

No diría que hay lenguajes de computadora "más potentes", solo idiomas más adecuados para su dominio de problema específico.

Dicho esto, PHP es un lenguaje que evolucionó de un truco y se adaptó para un dominio de problema muy específico; esto aparece en varios lugares, como por ejemplo el orden de parámetros incoherente en las interfaces de la base de datos. En mi humilde opinión, la comunidad PHP ha tomado algunas decisiones muy tristes para nuevas mejoras de sintaxis a lo largo del tiempo.

IMHO Python es mucho más general, bien diseñado y elegante, pero su pregunta es una que normalmente comienza flamewars.

0

Es un tema interesante y en mi línea de palabras me parece mucho esto. Pero descubrí que el "poder" en el sentido literal ya no tiene valor cuando se trata del lenguaje. Lo que me temo que los que te dicen 'python es más' poderoso se mezclan con el lenguaje y la implementación.

Soy un converso reciente a python (las últimas 2 semanas) anteriormente era un codificador PHP. Las bibliotecas creadas sobre el lenguaje de python, es decir, django -help, hacen que el lenguaje sea más poderoso, ya que es más rápido de usar y construir.

PHP tiene la fábula 'si quieres hacer algo. hay una función para él 'y la documentación es brillante, por lo tanto poderosa en ese sentido.

Y en lo que respecta a la interpretación del idioma, de nuevo depende de quién lo haya codificado, no importa. Por consenso general, Python se puede considerar más rápido y menos intensivo en la CPU, ya que crea versiones compiladas de su código. Pero PHP puede tener un buen sistema de almacenamiento en caché.

En resumen: elija su favorito.

Cuestiones relacionadas