Saltar al contenido principal
LibreTexts Español

3.4: Creación de software

  • Page ID
    155450
  • \( \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}\)

    Acabamos de discutir diferentes tipos de software y ahora podemos preguntar: ¿Cómo se crea el software? Si el software es el conjunto de instrucciones que le dice al hardware qué hacer, ¿cómo se escriben estas instrucciones? Si una computadora lee todo como uno y cero, ¿tenemos que aprender a escribir software de esa manera? Agradecidamente, se escribe otro tipo de software, especialmente para que los desarrolladores de software escriban software y aplicaciones del sistema, llamados lenguajes de programación. Las personas que pueden programar se llaman programadores informáticos o desarrolladores de software.

    Análogamente a un lenguaje humano, un lenguaje de programación consiste en palabras clave, comentarios, símbolos y reglas gramaticales para construir declaraciones como instrucciones válidas comprensibles por la computadora para realizar ciertas tareas. Usando este lenguaje, un programador escribe un programa (llamado código fuente). Otro software procesa entonces el código fuente para convertir las sentencias de programación a una forma legible por máquina, los unos y ceros necesarios para ejecutar la CPU. Este proceso de conversión a menudo se conoce como compilación, y el software se llama compilador. La mayoría de las veces, la programación se realiza dentro de un entorno de programación; cuando compra una copia de Visual Studio de Microsoft; proporciona a los desarrolladores un editor para escribir el código fuente, un compilador y ayuda para muchos de los lenguajes de programación de Microsoft. Ejemplos de lenguajes de programación conocidos hoy en día incluyen Java, PHP y varios sabores de C (Visual C, C++, C#.)

    Behaviorism_1.gif
    Figura\(\PageIndex{1}\): Convertir un programa de computadora en un ejecutable. Imagen de Ly-Huong T. Pham está licenciada bajo CC-BY-NC

    Miles de lenguajes de programación han sido creados desde el primer lenguaje de programación en 1883 por una mujer llamada Ada Lovelace. Uno de los primeros idiomas similares al inglés llamado COBOL ha estado en uso desde la década de 1950 hasta la actualidad en servicios que todavía usamos hoy en día, como nómina, sistemas de reservas. El lenguaje de programación C se introdujo en la década de 1970 y siguió siendo una de las mejores opciones populares. Algunos lenguajes nuevos como C#, Swift también están ganando impulso. Los programadores seleccionan el idioma que mejor se adapta al problema a resolver para una plataforma de SO en particular. Por ejemplo, se utilizan lenguajes como HTML y JavaScript para desarrollar páginas web.

    Es difícil determinar qué idioma es el más popular ya que varía. No obstante, según el Índice TIOBE, una de las empresas que clasifican mensualmente la popularidad de los lenguajes de programación, las cinco primeras en agosto de 2020 son C, Java, Python, C++ y C# (2020). Para más información sobre esta metodología, por favor visite la página de definición de TIOBE . Para aquellos que deseen aprender más sobre programación, Python es un buen primer idioma para aprender porque no sólo es un lenguaje moderno para el desarrollo web, es sencillo de aprender y abarca muchos conceptos fundamentales de programación que se aplican a otros lenguajes.

    Una persona puede escribir algunos programas. Sin embargo, la mayoría de los programas de software son escritos por muchos desarrolladores. Por ejemplo, se necesitan cientos de ingenieros de software para escribir Microsoft Windows o Excel. Para garantizar que los equipos puedan entregar software oportuno y de calidad con la menor cantidad de errores, también conocidos como bugs, se utilizan metodologías formales de gestión de proyectos, tema que discutiremos en el capítulo 10.

    Software de código abierto frente a software de código cerrado

    Cuando se lanzó por primera vez la computadora personal, los entusiastas de la informática se unieron de inmediato para construir aplicaciones y resolver problemas. Estos entusiastas de la informática estaban contentos de compartir cualquier programa que construyeran y las soluciones a los problemas que encontraron; esta colaboración les permitió innovar más rápidamente y solucionar problemas.

    A medida que el software comenzó a convertirse en un negocio, sin embargo, esta idea de compartir todo cayó en desgracia para algunos. Cuando un programa de software tarda cientos de horas en desarrollarse, es comprensible que los programadores no quieran regalarlo. Esto llevó a un nuevo modelo de negocio de licencias restrictivas de software, que requería el pago del software al propietario, un modelo que sigue siendo dominante hoy en día. A este modelo a veces se le conoce como fuente cerrada, ya que el código fuente sigue siendo propiedad privada y no se pone a disposición de otros. Microsoft Windows, Excel, Apple iOS son ejemplos de software de código cerrado.

    Hay muchos, sin embargo, que sienten que el software no debe restringirse. Al igual que esos primeros aficionados en la década de 1970, sienten que la innovación y el progreso se pueden hacer mucho más rápidamente si compartimos lo que aprendemos. En la década de 1990, con el acceso a Internet conectando cada vez más personas, el movimiento de código abierto ganó fuerza.

    El software de código abierto es un software que tiene el código fuente disponible para que cualquiera pueda copiar y usar. Para los no programadores, no será de mucha utilidad a menos que el formato compilado también esté disponible para que los usuarios lo utilicen. Sin embargo, para los programadores, el movimiento de código abierto ha llevado al desarrollo de algunos de los programas más utilizados en el mundo, incluido el navegador Firefox, el sistema operativo Linux y el servidor web Apache.

    A algunas personas les preocupa que el software de código abierto pueda ser vulnerable a los riesgos de seguridad ya que el código fuente está disponible. Otros lo contrarrestan debido a que el código fuente está disponible gratuitamente, muchos programadores han contribuido a proyectos de software de código abierto, haciendo que el código tenga menos errores y agregando características, y arreglando errores mucho más rápido que el software de código cerrado.

    Muchas empresas desconfían del software de código abierto precisamente porque el código está disponible para que cualquiera lo vea. Sienten que esto aumenta el riesgo de un ataque. Otros contraen que esta apertura disminuye el riesgo porque el código está expuesto a miles de programadores que pueden incorporar cambios de código para parchear vulnerabilidades rápidamente.

    En resumen, algunos beneficios del modelo de código abierto son:

    • El software está disponible de forma gratuita.
    • El código fuente del software está disponible; se puede examinar y revisar antes de instalarlo.
    • La gran comunidad de programadores que trabajan en proyectos de código abierto conduce a una rápida fijación de errores y adiciones de funciones.

    Algunos beneficios del modelo de fuente cerrada son:

    • Proporcionar un incentivo financiero para desarrolladores de software o empresas
    • Soporte técnico de la empresa que desarrolló el software.

    Hoy en día hay miles de aplicaciones de software de código abierto disponibles para descargar. Un ejemplo de software de productividad de código abierto es Open Office Suite. Un buen lugar para buscar software de código abierto es sourceforge.net, donde miles de aplicaciones de software están disponibles para su descarga gratuita.

    Licencias de Software

    Las empresas o desarrolladores son dueños del software que crean. El software está protegido por la ley ya sea a través de patentes, derechos de autor o licencias. Corresponde a los propietarios del software otorgar a sus usuarios el derecho de usar el software a través de los términos de las licencias.

    Para los proveedores de código cerrado, los términos varían según el precio que los usuarios estén dispuestos a pagar. Los ejemplos incluyen un solo usuario, una sola instalación, varios usuarios, múltiples instalaciones, por red o máquina.

    Tienen niveles de permiso específicos para que los proveedores de código abierto otorguen usando el código fuente y establezcan las condiciones de versión modificada. Los ejemplos incluyen distribución gratuita, remezcla, adaptación para uso no comercial pero con la condición de que el código fuente recién revisado también debe tener licencia en términos idénticos. Si bien los proveedores de código abierto no ganan dinero cobrando por su software, generan ingresos a través de donaciones o vendiendo soporte técnico o servicios relacionados. Por ejemplo, Wikipedia es una enciclopedia de contenido libre ampliamente popular y en línea utilizada por millones de usuarios. Sin embargo, depende principalmente de donaciones para mantener a su personal e infraestructura.

    Referencia

    Índice TIOBE para agosto de 2020. Recuperado el 4 de septiembre del 2020, de https://www.tiobe.com