Para llegar a tener una secuencia de instrucciones que den solucin a un problema es necesario
ejecutar varias etapas.
Etapa de anlisis: En esta etapa el programador debe entender claramente el problema. Saber que
es lo que se quiere resolver. (Analizar)
Etapa de Solucin general: Escribir la serie de pasos que sean necesarios para dar solucin al
problema. Estos pasos se pueden desarrollar a travs de un Diagrama de flujo (Utilizando
smbolos) a travs de un seudo lenguaje (Utilizando Lenguaje comn). A lo anterior es lo que se
conoce con el nombre de Algoritmo.
Etapa de prueba: Consiste en chequear el algoritmo paso a paso para estar seguro si la solucin da
solucin verdaderamente el problema. (Prueba de escritorio). Etapa de implementacin
especfica: Consiste en traducir el algoritmo a un lenguaje de programacin. (Codificar).
Etapa de prueba: Consiste en ejecutar el programa en un computador y revisar los datos arrojados
para ver si son correctos y hacer los ajustes necesarios. (Implementar).
Etapa de uso: Consiste en instalar el programa de manera definitiva para el uso por parte del
usuario.
2222No os asustis, la palabra Historia puede sonar fuerte y a veces provoca somnolencia en
quienes la escuchan. Tomen esto ms bien como un cuento que trata de hurgar un poco en el
pasado del ser humano, cuando crearon las mquinas y debieron aprender a comunicarse con
ellas.
Para nada este artculo trata de ser algo estrictamente cientfico, nada ms lejos de la realidad.
Trataremos de enfocarlo como un acercamiento del pblico general al mundo de la informtica, sin
necesidad de tener ningn tipo de conocimiento previo.
Un lenguaje es un mtodo de comunicacin que nos permite comunicarnos con los dems. Si
hablamos con un Ingls deberemos hacerlo en lenguaje ingls, si hablamos con un Japons le
hablaremos en lenguaje Japons pero, y si lo que queremos es hablar con una mquina? Pues
en ese caso debemos de hacerlo en un lenguaje que ella pueda entender: un lenguaje de
programacin.
En realidad estoy mintiendo un poco. Las mquinas solo entienden un lenguaje, el llamado
lenguaje mquina, que no es otra cosa que: electricidad o no electricidad, apagado o encendido,
unos o ceros. Entonces no entiende los lenguajes de programacin?, directamente no, primero
han de ser traducidos al lenguaje mquina bien directa o indirectamente
El lenguaje Mquina Este lenguaje es fcil de entender por una computadora, pero como podris
ver es difcilmente entendible por un humano. Es por ello que con el fin de facilitar el trabajo a los
programadores se cre un tipo de lenguaje que sustitua las secuencias de unos y ceros por
palabras o letras provenientes del ingls, facilitando de este modo la lectura, escritura y posterior
ejecucin de los programas. A los primeros lenguajes de este tipo se les denomin lenguajes de
bajo nivel.
Lenguajes de bajo nivel
Los lenguajes de bajo nivel de abstraccin, son los que estn ms cercanos a la forma de trabajar
de un microprocesador, por lo que son fcilmente trasladados a lenguaje mquina.
El lenguaje ensamblador (Assembly) fue el primer lenguaje de programacin que trat de sustituir
el lenguaje mquina por uno mucho ms parecido al de las personas. Lo que hace es sustituir las
secuencias de cdigo mquina por letras o palabras, por lo que en realidad escribir en lenguaje
ensamblador es bsicamente lo mismo que hacerlo en lenguaje mquina, pero las letras y palabras
son ms fciles de recordar y entender que la secuencias de nmeros binarios.
Un lenguaje de alto nivel es aquel que se aproxima ms al lenguaje humano que al lenguaje binario, o
lenguaje mquina. Utiliza palabras y expresiones del lenguaje humano (en ingls), por lo que al ser ms
fcilmente compresible por los programadores aumenta la sencillez y rapidez a la hora de crear programas, a
la par que reduce las posibilidades de equivocarse.
3335 lenguajes
En el ndice TIOBE correspondiente al mes de agosto de 2015, Java tiene el primer lugar
prcticamente indiscutido.
Java es de los lenguajes de programacin ms populares porque, adems, permite crear apps para
la web escalables para un sinnmero de usuarios. Java lleva la delantera al momento de
desarrollar aplicaciones para Android, sistema operativo de dispositivos mviles.
En resumen, el diseo de Java, su potencia, el respaldo de amplios sectores de la industria del
software y el hardware, su fiabilidad y su portabilidad lo han convertido en primero entre los
lenguajes de programacin ms populares.
Se trata, sin dudas, del lenguaje de programacin ms popular a la hora de crear software de
sistemas, aunque no son de desdear sus dotes para la creacin de aplicaciones. De hecho, gran
parte de la popularidad de C est basada en que se usa en propsitos diversos, y no solo para los
que fue diseado originalmente.
C es un lenguaje de programacin sencillo que tiene como una de sus principales virtudes que se
puede aprender rpidamente. No est ligado a ningn sistema operativo ni a una mquina
especfica.
Sus aplicaciones han sido variadas: desde la programacin en sistemas UNIX hasta el desarrollo de
sistemas operativos como GNU/Linux o Windows. Aplicaciones de escritorio como GIMP
programa de edicin de imgenes similar al Photoshop de Adobe, pero gratis! tienen a C como
principal lenguaje de programacin.
C se encontraba, hace exactamente un ao, en agosto de 2014, en el primer lugar del ndice
TIOBE, lo que habla muy bien de su popularidad como lenguaje de programacin.
Podramos decir que se trata de una extensin del lenguaje de programacin C que permite la
manipulacin de objetos.
Se trata de un lenguaje verstil, multiplataforma, que ofrece gran rendimiento y que no parece
pasar de moda.
Se deriva de la sintaxis del C y del C++. Es una herramienta ideal para abordar la creacin de
aplicaciones complejas con facilidad. Con C# no solo podemos escribir programas para la web, sino
otros de tipo ms general.
Los programadores recomiendan aprender C# sobre todo a los que se interesan en programar
apps para Windows, ya que el C# es su lenguaje de programacin estndar.
444
La programacin ha pasado por diferentes etapas histricas, en las que se fue evolucionando
desde formas de programar directas en la computadora, hasta formas que estn ms cercanas del
algoritmo de solucin de los problemas. Asi se puede decir que la programacin de computadoras
es la ciencia que permite a una persona programar una computadora para que resuelva tareas de
manera rpida. por su parte un Programa de computadora se puede definir como una secuencia de
instrucciones que indica las acciones o tareas que han de ejecutarse para dar solucin a un
problema determinado. se puede afirar que programar computadoras es indispensable en cualquier
rea laboral, ya que diferentes problemas que se puedan presentar tardan tiempo resolverlos de
manera manual. La computadora resuelve problemas de acuerdo como se le haya programado de
manera rpida.
En las distintas plataformas de Microsoft Windows, las herramientas de lnea de comando para el
desarrollo rara vez se utilizan. En consecuencia, hay muchas soluciones comerciales y no
comerciales; sin embargo cada uno tiene un diseo diferente que comnmente crean
incompatibilidades. La mayora de los principales proveedores de compiladores para Windows
siguen ofreciendo copias gratuitas de sus herramientas de lnea de comando. Adems las
herramientas del software libre GNU (gcc, gdb) estn disponibles en muchas plataformas,
incluyendo Windows.
Algunos entornos libres, como Code::Blocks, Eclipse, Lazarus, KDevelop y Netbeans, que a su vez
se desarrollan utilizando un lenguaje multiplataforma (por ejemplo, Free Pascal o Java), se
ejecutan en diversas plataformas, incluyendo Windows, GNU/Linux, y Mac OS X.
SISTEMAS OPERATIVOS Y
555
Las buenas prcticas diferencian a los buenos programadores de los malos programadores. Son ciertas reglas o
lineamientos acordados de manera informal por la industria del software para producir cdigo de alta calidad.
Es altamente aconsejable adoptarlas desde los comienzos, ya que los malos hbitos no son sencillos de desterrar una
vez adquiridos.
Esta es una lista, no taxativa, de algunas sugerencias ampliamente aceptadas en el mbito profesional:
Identificadores representativos
Los identificadores representan datos reales, por ende, son ms fciles de interpretar si se usan nombres reales.
Identificadores consistentes
Utilizar un mismo estilo de nombre, sin mezclar. Por ejemplo, elegir entre escribir los nombres como unaVariable,
una_variable UnaVariable.
Algo que tambin puede hacerse es cambiar el estilo por cada tipo de identificador: variables, constantes, funciones,
tipos de datos. Por ejemplo, las constantes suelen escribirse con sus identificadores completamente en maysculas,
por ejemplo: INT_MAX.
Formato consistente
Usar sangra (indentacin) siempre de la misma forma (con espacios o con tabulaciones) y alineando de la misma
manera las lneas de cdigo que componen cada bloque.
Usar consistentemente los espacios y las lneas en blanco (por ejemplo, despus de cada mdulo, dejar siempre la
misma cantidad de lneas en blanco).
Causan ambigedad al no poder predecirse el valor que tendrn en determinado punto de la ejecucin del programa,
ya que su valor puede cambiarse desde cualquier parte del cdigo. Este problema se intensifica a medida que las
lneas de cdigo aumentan y cuando ms de un programador trabaja en l.
Adems, las variables globales obstaculizan la legibilidad del cdigo, al referir a datos que no se encuentran dentro
del mdulo que las usa, y dificultan las pruebas o deteccin de errores.
No se deben confundir las variables globales con constantes o definiciones de tipo, que suelen utilizarse de manera
global y esto es correcto.
Documentacin
As como cualquier producto tiene un manual de instrucciones, el cdigo debe tener tambin descripciones sobre
cmo usarlo correctamente. El usuario del cdigo, habitualmente, ser un programador, ya sea un tercero o el
mismo programador que lo escribi (teniendo en cuenta que, pasado cierto tiempo, ser muy difcil recordar por qu
y con qu intencin se escribi el cdigo de determinada manera).
Adems, existen herramientas que son capaces de generar archivos o apartados de documentacin de manera
automtica, a partir de la documentacin incluida en el cdigo.
Normalmente, al documentar un mdulo se incluye: nombre, propsito, descripcin, autor original, cambios
hechos, autor de los cambios.
Tambin es buena prctica incluir, junto a la documentacin, casos de prueba (test cases) que permitan validar el
cdigo ante cualquier modificacin que se haga. Para que sean correctos, los casos de prueba deben validar el
cdigo con datos vlidos, datos invlidos, datos lmite (el primer o el ltimo valor admitido), sin datos, y cualquier
otra posibilidad que pueda incluirse.
Comentarios
Se deben evitar obviedades (por ejemplo, decir se asigna un valor a la variable cuando el cdigo claramente
muestra una asignacin). Un buen comentario aclara qu hace el cdigo ypor qu se decidi hacerlo de esa manera.
Cuando se trabaja en equipo, los comentarios deben hacerse en un idioma que resulte neutral para todos los
integrantes (por ejemplo, ingls, si el equipo incluye integrantes que no son de habla hispana).
Evitar desparramar valores literales a lo largo de todo el cdigo permite hacer modificaciones centralizadas. Por
esto, los literales deben, preferentemente, ubicarse en una nica seccin del cdigo y referirse a ellos
simblicamente desde cada lugar donde se necesiten.
A la prctica de colocar valores literales cuando podran haberse usado referencias se la llama hard-coding.
Por ejemplo, si se utiliza un valor fijo en un clculo que debe hacerse en varias partes del cdigo, es conveniente
que ese valor se declare como constante y luego se utilice el nombre de la misma cada vez que sea necesario. De
esta manera, llegado el caso de realizar una modificacin, ser suficiente con hacerla en un solo punto del cdigo.
Modularizacin
Modularizar permite que el cdigo sea reusable, no slo dentro del mismo programa sino en otros programas que
requieran funcionalidad similar.
Los mdulos deben ser atmicos, es decir, realizar slo una tarea. Es preferible invocar a ms de un mdulo que
abarcar varias tareas en uno.
Simplicidad y claridad
Evitar la complejidad innecesaria que hace que un cdigo sea menos legible. No slo lo hace ilegible para terceros,
sino para el propio programador, cuando necesita volver a utilizar ese cdigo tiempo despus de haberlo escrito.
La complejidad podra estar, no slo en el algoritmo, sino en la forma de escribirlo: a veces, es mejor escribir
algunas lneas ms antes que abreviar demasiado.
Comprobar validez de datos externos
Asumir que el usuario puede proporcionar datos en un formato diferente al esperado por el programa. El usuario
puede ser un humano o incluso otro programa u otra mquina, y la incongruencia puede ser causada por error o por
malicia.
Se debe evitar que el programa se detenga o quede inconsistente, para que pueda continuarse trabajando sin
alteraciones.
En pos de la usabilidad, es necesario no aturdir al usuario con mensajes de error que le brinden informacin que
l desconoce. Pero, a la vez, los detalles de un error deben quedar almacenados en alguna parte, accesibles para la
persona con el conocimiento tcnico para lidiar con ese error. Por ejemplo, podran almacenarse en algn log.
Portabilidad
Por eso, se deben evitar las rutas absolutas (que hacen referencia al sistema de archivos de una mquina en
particular), indicar literalmente direcciones IP, nombres de usuarios o contraseas, utilizar libreras que slo corren
en determinado sistema operativo, etc.
Cuando un mdulo o expresin retorna algn valor, ste podra tener diferentes fines, dependiendo del uso que se le
de al programa.
No siempre un programa es utilizado por un usuario humano, sino que podra resultar que el usuario sea otro
programa, que utiliza los datos para continuar procesndolos. Por esto, los datos pueden tener diferente fin: a veces
se necesitar imprimirlos, a veces enviarlos a travs de una red (en diversos formatos), otras veces los datos de
salida de un programa sern la entrada de otro.
Bajo acoplamiento
La transitividad puede utilizarse como medida del acoplamiento: suponiendo que un mdulo A invoca al mdulo B
y ste invoca al mdulo C, el mdulo A debera conocer lo menos posible el funcionamiento del mdulo C.
Mientras ms requiera A conocer de C, ms acoplados estarn.
Cuanto mayor sea el acoplamiento, mayor ser la dificultad al modificar o reemplazar algn mdulo, y mayor ser
la dificultad para probar su funcionamiento.
La posibilidad de aislar lo ms posible los mdulos tambin facilita el trabajo en equipo sin necesidad de
comprender todo el resto del cdigo y sin riesgo de que una modificacin altere el trabajo que est haciendo otra
persona.
Alta cohesin
Todo agrupamiento de datos debe tener sentido. Todo lo que se agrupe de alguna manera (por ejemplo, en una
estructura de datos o en un archivo) debe tener una cercana interrelacin.
Legibilidad
Eficiencia: utilizacin ptima de los recursos.
Robustez y confiabilidad: tolerancia a fallas.
Mantenibilidad: facilidad para corregir errores.
Adaptabilidad: ante requerimientos cambiantes o nueva funcionalidad.
Conformidad con estndares: por ejemplo, para comunicarse con otro programa.
Usabilidad: utilizar ms fcilmente el cdigo.
Menor costo de desarrollo: evaluado en tiempo y dinero.
666 Aunque C# forma parte de la plataforma .NET, sta es una API, mientras que C# es un
lenguaje de programacin independiente diseado para generar programas sobre dicha
plataforma. Ya existe un compilador implementado que provee el marco Mono -DotGNU, el
cual genera programas para distintas plataformas
como Windows, Unix, Android, iOS, Windows Phone, Mac OS yGNU/Linux.
Lenguaje C#