La mejor respuesta
Python es un lenguaje de scripting, aunque también es un lenguaje totalmente orientado a objetos. lenguaje de programación. La diferencia entre un lenguaje de secuencias de comandos y un «programa» es si el código lo ejecuta un intérprete o no. Esa es probablemente la forma más fácil de pensar en ello.
Entonces, si escribe un script en Python, tendrá un archivo .py. Cuando desee ejecutar ese archivo, en realidad ejecutará python y le pasará su archivo .py como argumento. Algo como:
/usr/bin/python /Path/To/MyScript.py
Python luego ejecutaría el script. Como han mencionado otros, puede poner una línea shebang en su secuencia de comandos, pero eso solo le dice a su máquina dónde encontrar el intérprete para ejecutar la secuencia de comandos. Hay ventajas y desventajas en el enfoque del intérprete. Una ventaja principal sería la facilidad de uso. Puede poner la línea de abajo en un archivo .py y puede ejecutarlo a través de Python:
print("Hello world!")
Con un lenguaje como Swift , C ++, C # o Java, por ejemplo, en realidad compilaría su programa en código de máquina y el archivo que resulte de esa compilación sería su programa, o parte de su programa. Sin embargo, estaría listo para distribuirse como está y no es necesario que se requieran otros programas para ejecutarlo. Los idiomas interpretados tienden a no ser tan rápidos también por varias razones. Probablemente valga la pena mencionarlo.
Tienes razón en que Python no es realmente comparable a Bash. Aunque puede lograr mucho en Bash, el lenguaje en sí no es muy poderoso y no está diseñado para escribir en programas o soluciones con. Python es un lenguaje de programación orientado a objetos con todas las funciones, y puede escribir casi cualquier cosa con él. Entonces, es cierto que ambos son lenguajes de scripting, pero no están en la misma liga. Por un lado, Bash no está orientado a objetos. Además, con Bash, principalmente solo está invocando aplicaciones de consola, que se escribieron en un idioma diferente. Luego, simplemente analiza los resultados con Bash o los envía a la siguiente utilidad de consola a través de la tubería.
Aquí hay algunos ejemplos de lenguajes de secuencias de comandos interpretados:
Python, Ruby, Node JS, Powershell, vbScript, Javascript, Appescript, Bash, Perl, etc.
Aquí hay algunos lenguajes compilados y fuertemente tipados:
Swift, Objective C, C, C ++, C # , Java
Con suerte, eso ayudará a aclararlo.
Respuesta
Los lenguajes de programación como Python, Ruby, JavaScript, PHP también son lenguajes de programación. Son diferentes en comparación con los lenguajes compilados tradicionales en que se interpretan y tienen escritura dinámica: el tipo de datos de un objeto se puede cambiar en cualquier momento. En otras palabras, no es necesario definir el tipo de datos de un objeto o el valor de retorno de una función de antemano y puede cambiarlo sobre la marcha.
Tradicionalmente, los lenguajes de scripting se utilizan para procesos simples y tareas rápidas. Pero esto ya no es cierto. Ahora existen grandes programas y bases de código en Python, Ruby, JavaScript y PHP. Algunos de estos lenguajes tienen un rendimiento lento en comparación con los lenguajes compilados. Pero incluso eso ya no es cierto. Con las tecnologías JIT, JavaScript y PyPy han mostrado una gran mejora en el rendimiento, al igual que PHP 7.
Al final, es solo una terminología que necesita reformularse.
Tecnología web en su más simple es un conjunto de documentos estáticos enviados por el servidor web al navegador web y el navegador los procesa de acuerdo con HTML y CSS. HTML es un lenguaje de marcado y CSS agrega estilos, lo que facilita la escritura de páginas web consistentes y personalizadas. Pero el contenido es estático y para cambiar cualquier contenido, debe modificar el contenido HTML existente o escribir nuevo.
Para hacer que el contenido web sea dinámico, puede tomar uno de estos dos enfoques: i) CGI o ii) incrustación código dentro de páginas HTML. La técnica anterior hace que el servidor web llame a un ejecutable (escrito en un lenguaje de programación como C, Perl o cualquier otro, incluidos los lenguajes de scripting) que genera una página web completa (con los encabezados HTML apropiados, etc.) de forma dinámica, tome el resultado generado por el ejecutable y devolverlo al navegador web. Esto requiere el uso de bibliotecas que entiendan cómo interactuar con un servidor web (HTTP). Tedioso, pero la forma más antigua de contenido web dinámico se escribió de esta manera. Este último adopta un enfoque diferente. El servidor web reconoce páginas con código incrustado (que generalmente contienen HTML incrustado con código escrito en un lenguaje de scripting como PHP, JSP, Python) lo envía a un motor de scripting que solo ejecuta el código incrustado y lo reemplaza con el resultado de la ejecución del código ( dejando el resto del HTML, CSS, JavaScript sin cambios) y devuelve la página HTML modificada al servidor, que a su vez la devuelve al navegador web. Python, Ruby también usa una variación similar pero leve de este enfoque. Esto es scripting del lado del servidor
JavaScript comenzó como un lenguaje de codificación / scripting dinámico del lado del cliente.Cada navegador tiene un intérprete de JavaScript integrado. El código JavaScript puede incrustarse en una página web y enviarse al navegador web, que luego ejecuta este código en el lado del cliente para tareas como la validación de formularios y el cambio dinámico del DOM. Pero con la llegada de Node.js, JavaScript puede hacer lo que hacen los lenguajes de scripting del lado del servidor.
Luego vino AJAX, una tecnología que permite que el código JavaScript del lado del cliente ejecute scripts del lado del servidor, extrayendo el resultado del servidor y poblar el DOM. De esta manera, podría completar los cuadros desplegables en el navegador de forma dinámica sin actualizar la página web. Las bibliotecas de JavaScript como jQuery hicieron que la creación de scripts del lado del cliente fuera modular y fácil. Los marcos HTML / CSS como Bootstrap hicieron lo mismo para HTML5 y CSS3.
Los marcos de aplicaciones web modularizan y simplifican la escritura de aplicaciones web. Cada lenguaje de secuencias de comandos tiene su colección de marcos de aplicaciones web. Ruby tiene Ruby on Rails. Python tiene Django, Flask. PHP tiene Laravel. JavaScript tiene AngularJS y otros.
Las aplicaciones web se basan en bases de datos como almacén de datos persistente. Por lo tanto, es esencial conocer las tecnologías de bases de datos y SQL, como la capa de abstracción de bases de datos y el mapeo relacional de objetos. El advenimiento de las bases de datos NoSQL agrega cosas nuevas que un desarrollador web debe aprender.