9.5: Software de escritura
- Page ID
- 60982
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)Objetivos de aprendizaje
Después de estudiar esta sección deberías poder hacer lo siguiente:
- Entender, a nivel gerencial, qué son los lenguajes de programación y cómo se desarrolla el software.
- Reconocer que un sistema operativo y microprocesador constriñen la plataforma sobre la que se ejecutará la mayoría del software de aplicación compilado.
- Entender qué es Java y por qué es significativo.
- Conoce qué son los lenguajes de scripting.
Entonces tienes una gran idea que quieres expresar en software, ¿cómo haces para crear un programa? Los programadores escriben software en un lenguaje de programación. Si bien cada idioma tiene sus fortalezas y debilidades, la mayoría del software comercial está escrito en C++ (pronunciado “see plus plus”) o C# (pronunciado “see sharp”). Visual Basic (de Microsoft) y Java (de Sun) también se encuentran entre los más populares de las decenas de lenguajes de programación disponibles. Los desarrolladores web pueden favorecer lenguajes especializados como Ruby y Python, mientras que lenguajes como SQL se utilizan en bases de datos.
La mayoría de los programadores profesionales utilizan un entorno de desarrollo integrado (IDE) para escribir su código. El IDE incluye un editor de texto, un depurador para detectar errores y otras herramientas de programación útiles. El IDE más popular para Windows es Visual Studio, mientras que Apple ofrece el IDE de Xcode. La mayoría de los IDE pueden soportar varios lenguajes de programación diferentes. El IDE también compilará el código de un programador, convirtiendo las líneas de instrucciones de nivel superior que son legibles por los humanos en instrucciones de nivel inferior expresadas como los patrones de unos y ceros que son legibles por el microprocesador de una computadora.
Mire el costado de una caja de software comercial y es probable que vea los requisitos del sistema que especifican el sistema operativo y el procesador para los que está diseñado el software (por ejemplo, “este software funciona en computadoras con Windows 7 y procesadores compatibles con Intel”). ¿No sería genial si el software pudiera escribirse una vez y ejecutarse en todas partes? Esa es la idea detrás de Java, un lenguaje de programación desarrollado por Sun Microsystems.
Los programadores Java no escriben código con comandos específicos del sistema operativo (por ejemplo, para Windows, Mac OS X o Linux), sino que utilizan comandos especiales de Java para controlar su interfaz de usuario o interactuar con la pantalla y otro hardware. Los programas Java pueden ejecutarse en cualquier computadora que tenga una Máquina Virtual Java (JVM), una capa de software que interpreta el código Java para que pueda ser entendido por el sistema operativo y procesador de una computadora determinada. La independencia de la plataforma de Java, la capacidad de los desarrolladores de “escribir una vez, correr en todas partes”, es su mayor punto de venta. Muchos sitios Web ejecutan applets Java para ejecutar la animación que podrías ver en anuncios o juegos. Java también se ha implementado en más de seis mil millones de teléfonos móviles en todo el mundo, y es popular entre los programadores empresariales que quieren asegurarse de que sus programas puedan escalar desde hardware más pequeño hasta supercomputadoras de alta gama. Siempre y cuando la máquina que recibe el código Java tenga una JVM, entonces la aplicación Java debería ejecutarse. Sin embargo, Java no ha sido popular para las aplicaciones de escritorio. Dado que Java no está optimizado para aprovechar los elementos de interfaz específicos para Mac o Windows, la mayoría de las aplicaciones de escritorio Java parecen torpes y antinaturales. El código Java que se ejecuta a través del intérprete JVM también es más lento que el código compilado para el sistema operativo nativo y el procesador que componen una plataforma 1.
Los lenguajes de scripting son la categoría final de herramienta de programación que cubriremos. Los lenguajes de scripting normalmente se ejecutan dentro de una aplicación. Microsoft ofrece un lenguaje de scripting llamado VB Script (un derivado de Visual Basic) para automatizar funciones en Office. Y la mayoría de los navegadores y servidores Web soportan JavaScript, un lenguaje que ayuda a que la Web sea más interactiva (a pesar de su nombre, JavaScript no está relacionado con Java). Los lenguajes de scripting se interpretan dentro de sus aplicaciones, en lugar de compilarse para ejecutarse directamente por un microprocesador. Esta distinción los hace más lentos que los tipos de esfuerzos de desarrollo que se encuentran en la mayoría del software comercial. Pero la mayoría de los lenguajes de scripting suelen ser fáciles de usar y suelen ser utilizados tanto por programadores profesionales como por usuarios avanzados.
Claves para llevar
- Los programas suelen escribirse en una herramienta llamada IDE, una aplicación que incluye un editor (una especie de procesador de textos de programador), depurador y compilador, entre otras herramientas.
- La compilación toma código del lenguaje de alto nivel que los humanos pueden entender y los convierte en los conjuntos de unos y ceros en patrones que representan instrucciones que los microprocesadores entienden.
- Los lenguajes de programación populares incluyen C++, C#, Visual Basic y Java.
- La mayoría del software está escrito para una plataforma, una combinación de un sistema operativo y un microprocesador.
- Java está diseñado para ser independiente de la plataforma. Las computadoras que ejecutan Java tienen una capa separada llamada Máquina Virtual Java que traduce (interpreta) código Java para que pueda ejecutarse en una combinación de sistema operativo/procesador. En teoría, Java es “escribir una vez, ejecutar en todas partes”, a diferencia de las aplicaciones convencionales que se escriben para un sistema operativo y se compilan para una combinación de OS/procesador.
- Java es popular en teléfonos móviles, computación empresarial y para hacer que los sitios web sean más interactivos. Java nunca ha sido un reemplazo exitoso para las aplicaciones de escritorio, en gran parte porque las diferencias de interfaz de usuario entre los diversos sistemas operativos son demasiado grandes para ser fácilmente estandarizadas.
- Los lenguajes de scripting son lenguajes interpretados, como VB Script o Java Script. Muchos lenguajes de scripting se ejecutan dentro de una aplicación (como los programas de Office, un navegador web o para soportar las funciones de un servidor web). Suelen ser más fáciles de programar, pero son menos potentes y se ejecutan más lentamente que los lenguajes compilados.
Preguntas y ejercicios
- Enumerar lenguajes de programación populares.
- ¿Qué es un IDE? ¿Por qué los programadores utilizan IDE? Nombra IDEs populares para usuarios de Windows y Mac.
- ¿Cuál es la diferencia entre un lenguaje de programación compilado y un lenguaje de programación interpretado?
- Nombra una ventaja y una desventaja de los lenguajes de scripting.
- Además de las computadoras, ¿en qué otra tecnología se ha desplegado Java? ¿Por qué supone que Java es particularmente atractivo para este tipo de aplicaciones?
- ¿Qué es una JVM? ¿Por qué lo necesitas?
- ¿Y si un programador escribiera un código Java perfecto, pero hubo un error en la JVM instalada en una computadora determinada? ¿Qué podría pasar?
- ¿Por qué los desarrolladores elegirían escribir aplicaciones en Java? ¿Por qué podrían omitir Java y elegir otro lenguaje de programación?
- ¿Por qué Java no es popular para las aplicaciones de escritorio?
- Ir a http://www.java.com. Haga clic en “¿Tengo Java?” ¿Java se ejecuta en tu computadora? ¿Cuál versión?
1 Algunas ofertas han intentado superar los problemas de velocidad asociados con la interpretación del código Java. La compilación justo a tiempo almacena el código en forma ejecutable por procesador nativo después de que cada segmento se interpreta inicialmente, lo que ayuda aún más a acelerar la ejecución. Otros entornos permiten que Java sea compilado con anticipación para que pueda ser ejecutado directamente por un microprocesador. Sin embargo, este proceso elimina la portabilidad del código, el punto de venta clave de Java. Y los desarrolladores que preparan su código para la JVM en realidad precompilan el código en algo llamado bytecode Java, un formato que es menos amigable con los humanos pero interpretado más rápidamente por el software JVM.