Sunteți pe pagina 1din 4

ComputacincientficaconPythonparamdulosdeevaluacincontinua

enasignaturasdecienciasaplicadas
A N TER IO R |S IG U IEN T E

1.Introduccin

TABLADECONTENIDOS
Autores

Autores:JosMaraHerreraFernndez,LuisMiguelSnchezBrea
Contenidosdeestecaptulo:

Quesnuevo
Licencia

Precedentes
PorquPython?
Pythonvs.Matlab
Pythonenelmbitocientfico

1.1.Precedentes
El manejo de aplicaciones informticas, actualmente generalizado, no conlleva realmente el dominio de las nuevas
tecnologasinformticas.Laprogramacinysimulacinsehaconvertidoenunatareanecesariaenlasociedadyenel
mbitocientficotcnico,yporsupuestoenelmbitoacadmico.Sinembargo,lagranmayoradelosalumnosque
llegan a los primeros cursos universitarios no tienen ninguna experiencia en programacin. Incluso en cursos
superiores,unporcentajedemasiadoaltonohanidomsalldelosejerciciospropuestosenlasasignaturasobligatoras
declculonumrico.
DentrodelaasignaturapticadelgradoenFsicadelaUniversidadComplutensedeMadrid,LuisMiguelSnchez
Brea y Jos Mara Herrera Fernndez (profesor de la asignatura y alumnotutor respectivamente) incorporaron en el
curso20112012unaseriedeseminariosdeComputacincientficadefenmenospticosbasadosenellenguajede
programacinPython.Losseminariosseenfocaroncomoapoyoalaprendizajedepticautilizandolaprogramacin
comomedioderesolucindeejerciciosenpticayfueronlasemillaparaesteproyectodocentedondepretendemos
presentarejemplossencillosydefcilcomprensindelusodePythoncomoherramientaendiferentesmbitos.

1.2.PorquPython?
Python es un lenguaje de programacin moderno, de alto nivel, ideal para pequeas aplicaciones as como para
proyectos de gran envergadura. El cdigo de Python es similar al pseudocdigo utilizado para esquematizar la
programacin.Permiterealizartodolonecesarioparaunaprogramacincompleta:diseoorientadoaobjetos,unidades
detesteo,generacindedocumentacinenelcdigo,sencillainteraccinconelsistemaoperativo,etc.Escompatible
conlaprogramacinbasadaenobjetos,ascomolaestructuradayporeventos.Tieneunexcelenteconjuntodelibreras
paraextendersufuncionalidad,incluyendolibrerascientficasquepermitenrealizarnumerosastareasdetratamiento
dedatos,visualizacin,clculonumricoysimblicoyotrasaplicacionesespecficas.Adems,existeunacomunidad
muygrandedeusuariosque,debidoalafilosofaopensource,sonmuchomsproclivesacompartirsucdigo.
A la hora de empezar a trabajar en computacin lo primero que nos sorprende es la gran cantidad de lenguajes de
programacin, por lo que se debe realizar una seleccin cuidadosa. Una lista de los lenguajes de programacin ms
utilizadossepuedeencontrarenlaFigura1.

Descargas
Referencias
1.Introduccin
2.PuestaenMarcha
3.LenguajesdeProgramacin
4.MdulosCientficos
5.EcuacionesdeMaxwellenelvaco
6.Polarizacin
7.Interaccinradiacinmateria
8.ndicederefraccin:modelomicroscpico
9.EcuacionesdeFresnel
10.Pulsosdeluz
11.Interferencias
12.Mdulosdeptica
13.Difraccinencampocercano
14.Difraccinencampolejano
15.RedesdeDifraccin
16.Procesadopticodelainformacin

BSQUEDA
Ira
Introduzcalostrminosdebsquedaounnombrede
mdulo,claseofuncin.

Figura1.Lenguajesdeprogramacinmsutilizadosenelmundo.Pythonsemantieneestablecomotercerlenguajede
programacindespusdelafamiliadeCydeJava.Ademscomparndoconunlenguajedembitocientficocomo
MATLAB,suposicinesnotablementesuperior(4,3%deusofrentea0,6%).Fuente:TIOBEProgramming
CommunityIndexforNovember2013,http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.
Porunladoexistenlenguajesdeusomuyextendido.ActualmenteJavaesellenguajemsutilizado,puesseutilizapara
aplicacionescorporativas.ElsegundolenguajeesCensusdiferentesversiones,unestndarenlaprogramacindurante
muchsimos aos. La mayor parte de las ms famosas aplicaciones de escritorio estn escritas en C++. Estos dos
lenguajes dominan el negocio de la programacin. PHP domina en la red. Mientras Java lo utilizan las grandes
organizaciones,PHPloutilizanempresasmspequeaseindividuosparacrearaplicacioneswebdinmicas.Porotro
lado,haynumerospaquetesnumricoscomoMatlab,MathematicayMaplequeseutilizanencentrosdeinvestigacin.
LagranmayoradelosalumnosquelleganalosprimeroscursosdeFsicanohanprogramadonadaocasinada.Espor
elloquehemoselegidounlenguajedeprogramacinlomssencilloycompletoposible.Pythonnosofreceunagran
sencillez de programacin, una gran cantidad de libreras en las que basar nuestros programas y una importante
comunidaddeusuariosydesarrolladoresquelosoportan.Tambintienelaventajadeseropensource,porlononos
vamosatenerqueasumirningncostedebidoaderechosdeautor.Otraventajaesserunsistemamultiplataforma,as
quepodremosprogramarencualquiersistemaoperativocomoWindows,LinuxoMacOs.
VeamosresumidasalgunasdelasventajasdellenguajedeprogramacinPython.
Pythonesunlenguajedeprogramacindealtonivelquepermiteunarpidaimplementacindeaplicaciones
con muy poco cdigo. Es ideal para prototipado rpido, pero tambien permite el desarrollo de grandes
aplicaciones.
ElcdigodePythoneslegible,muysimilaralpseudocdigoutilizadoparaesquematizarlaprogramacin.
Pythonesunlenguajeinterpretadoporunamquinavirtual,nocompilado,porloqueesmultiplataforma.
Python permite realizar todo lo necesario para una programacin de cdigo moderna: diseo orientado a
objetos, unidades de testeo, generacin de documentacin en el cdigo, sencilla interaccin con el sistema
operativo,etc.
Tieneestructurasdedatosdealtonivel,comolaslistas,tuplasydiccionarios
Permite la programacin basada en objetos, aunque tambien soporta la programacin funcional y la
programacinestructurada.
Esunlenguajedinmico,pudiendoseaadirnuevasfuncionesyclasesaunobjetoexistente,inclusoentiempo
deejecucin.
ExistenlibrerascientficasescritasenPhythonmadurasycongrancapacidad.
Permite extender trivialmente su aplicabilidad con mdulos escritos en C, C++ y Fortran, de los que existen
numerosaslibrerascientficas.Alserlosprocedimientosmsrpidosyeficientesparadesarrollodealgoritmos
matemticos(aunqueavecesmuchomscomplicadosparaotrastareas),sepuedenprogramarlaspartesms
sensiblesenCyrealizarelrestodelaaplicacinenPython
Tiene un enorme conjunto de libreras para extender su funcionalidad: para acceseo a base de datos, para
almacenamientodedatos,paraprocesamientodeimgenes,desonido,paraprogramacinconGUIs(Interfaces
grficasdeusuario,ventanas),yotrasmuchisimasms.
Permiteelaccesoatodalafuncionalidaddelsistemaoperativo(sobretodoenLinux).
Pythonsepuedeutilizarcomosoftwareglueparacombinardistintasaplicacionesenunasola(sobretodoel
Linux).

Elusodelaindentacinenlugardelosparntesispermiteunamayorlegibilidaddelcdigo.
El cdigo Python se escriben en archivos .py. Estos archivos se pueden agrupar en mdulos, y se pueden
importarloselementosdelosmdulosaotrosarchivos.
Para sistemas Unix, se puede utilizar cdigo para hacer el archivo autoejecutable indicando al sistema que
programaqueelesunejecutable(nohacefaltaqueseaunarchivo.exe).utilizar(#!)
Elcdigoesextraordinariamentesencillodecomprender.
Existenmdulosdegrancalidadyrepositoriosdecdigodondesepuedeencontrarnumerosasaplicaciones.En
linux,granpartedelosmdulosestnenlosrepositoriosestndar,porloquesuinstalacinestnsencillacomo
pulsarunbotn.
Existeunacomunidadmuygrandedeusuariosydebidoalafilosofaopen,losdesarrolladoressonmuchoms
proclives a compartir su cdigo con otros. Adems no suelen existir problemas de uso del cdigo de otros,
siemprequecumplaslosrequisitosdelalicenciaGLS.
AlserPythonunlenguajedepropsitogeneral,elcdigoquesegenerasepuedeaprovechardelasventajasde
otrosmdulos(comocomprimirarchivos,enviardatos,automatizarprocesos,enlazarnuestrosdatosconbases
dedatos,conservidoresweb....
PythonsepuedeejecutarenbastantesIDEs(editores),desdealgunosmuysencillos,comoIDLE,hastaotrostan
completoscomoSpyder,EclipseoNetBeans.
Existen diversas tcnica para creas sistemas de ventanas (Tkinter, wx, QT, etc.) de una forma
sorprendentemente sencilla en comparacin con otros sistemas operativos. Si se nos da bien el curso,
intentaremosverQT4,atravsdelaherramientadecreacindeventanasQTDesigner4.

1.3.Pythonvs.Matlab
MATLAB(abreviaturadeMATrixLABoratory,laboratoriodematrices)esunsoftwarematemticoqueofreceun
entornodedesarrollointegrado(IDE)conunlenguajedeprogramacinpropio(lenguajeM).Estdisponibleparalas
plataformasUnix,WindowsyAppleMacOSX.Entresusprestacionesbsicassehallan:lamanipulacindematrices,
larepresentacindedatosyfunciones,laimplementacindealgoritmos,lacreacindeinterfacesdeusuario(GUI)yla
comunicacinconprogramasenotroslenguajesyconotrosdispositivoshardware.ElpaqueteMATLABdisponede
dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulacin
multidominio) y GUIDE (editor de interfaces de usuario GUI). Adems, se pueden ampliar las capacidades de
MATLABconlascajasdeherramientas(toolboxes)ylasdeSimulinkconlospaquetesdebloques(blocksets).Matlab
tieneventajasmuyinteresantesparalaprogramacincientfica.
Lassesionesinteractivaspermitenjugarconlosdatosdeunaformamuysencilla.
Lasintaxisestmuybiendesarrolladaparatrabajarconvectoresymatrices.
Lacapacidaddevisualizacindedatosymodificacindefigurasesexcepcionalementebuena.
Existenlibreras(normalmentepropietarias)degrancalidadyexisteunacomunidadmuygrandedeusuarios.
Noobstante,lamayorpartedeestasventajastambinlastienePhython.Adems,tieneunaseriededesventajasquelo
desaconsejancomoprimerlenguajedeprogramacin.
Enprimerlugarnoesunlenguajedeprogramacinverdaderoyaqueestmuydedicadoalclculonumrico,
aunquesufuncionalidadsehaextendidoconnumerosastoolboxes(controldebasesdedatos,interaccinconel
sistemaoperativo,etc...).
Adicionalmente,esunlenguajepropietarioquerequieredelicenciasexcesivamentecarasparaestudiantes.
Nosepuedeejecutarcdigodeformaindependiente(standalone).NOTA:Recientementesehaproporcionado
una herramienta adicional llamada MATLAB Builder bajo la seccin de herramientas Application
Deployment para utilizar funciones MATLAB como archivos de biblioteca que pueden ser usados con
ambientesdeconstruccindeaplicacin.NEToJava.
Eshorriblehaceruncdigolargo,puescadafuncindebeestarenunnicoarchivo.Estosignificanmilesde
archivosyhacemscomplicadoquevariosprogramadorestrabajenenelmismocdigo.
TambinPythontienealgunasdesventajasrespectoaMatlab:
Noestansencillomanipularlasfigurasentiemporeal.
Al existir una cantidad ingente de programadores que aportan su cdigo de forma libre, a veces es dificil
determinarcualessonlosmdulosmejoresparaunaciertaaplicacin.Haymsposiblidadesdondeelegir.

1.4.Pythonenelmbitocientfico
Python es un lenguaje de programacin de propsito general que, en un principio, no se pens para aplicaciones
cientficas. Con los aos, siguiendo la filosofa GNU, se han desarrollado multitud de mdulos cientficos, que
permitenrealizarnumerosastareasdetratamientodedatos,visualizacin,clculosimblicoyaplicacionescientficas
especficas.Nosotrosutilizaremosfundamentalmentelossiguientesmduloscientficos:
Numpy:Generacindetiposdedatoscientficos.http://www.numpy.org/
Scipy:Funcionescientficasdeusogeneral.http://www.scipy.org/
Matplotlib:Grficasen2Dy3D.http://matplotlib.org/
Mayavi:visualizacindedatostridimensionales.http://code.enthought.com/projects/mayavi/

Visual Python: Permite realizar representaciones tridimensionales de objetos en movimiento.


http://www.vpython.org/
SymPy:Clculosimblico.http://sympy.org/en/index.html
Opencv: Biblioteca libre de visin artificial en C cuyas libreras se han adaptado a Python.
http://opencv.willowgarage.com/documentation/python/
Meep: clculo de Diferencias finitas en el dominio del tiempo. http://abinitio.mit.edu/wiki/index.php/Meep.
NOTA: Existe un enlace (binding) para Python, de forma que se puede programar dicho mdulo de una
maneramuchomssencilla,https://launchpad.net/pythonmeep.
Existen asimismo otros muchos mdulos bastante maduros escritos en Python como OpenFilters para el diseo de
filtros interferenciales, http://www.polymtl.ca/larfis/English_Version/OF/OF_English.htm y Empy donde se
implementa la tcnica de RCWA, http://empy.sourceforge.net. Para ms informacin el lector puede consultar el
siguienteenlacehttp://www.scipy.org/topicalsoftware.htmldondepodrencontrarotrosmodulosdeinters.

ANTERIOR|SIGUIENTE
MOSTRARELCDIGO
Copyright2013,LuisMiguelSnchezBrea.CreadoconSphinx

S-ar putea să vă placă și