# Llenguatge multiplataforma .full_width[![img](img/kotlincar.png)] - __Interoperable__ amb Java. Permet a les empreses fer una migració gradual - __Natiu__: Kotlin es pot convertir en un fitxer que es pot executar en qualsevol sistema operatiu. --- # Llenguatge pragmàtic i multiparadigma - El propòsit principal és resoldre problemes del món real en lloc de completar propòsits de recerca. - Admet múltiples paradigmes de programació: - programació imperativa - programació orientada a objectes - programació funcional --- # Breu història - El nom prové de la illa de Kotlin a prop St. Petersburg, Russia - L’objectiu principal era proporcionar una alternativa més segura i concisa a Java en tots els contextos on s’utilitza Java actualment. - 2016: primera versió oficial estable (Kotlin v1.0) - 2017 Google anuncia que treballarà amb Kotlin per Android --- # Kotlin popularity - Hi ha més de mil llenguatges de programació. Els primers continuen evolucionant i n'apareixen de nous - [PYPL](https://pypl.github.io/PYPL.html) - [Tiobe](https://www.tiobe.com/tiobe-index/) - [Spectrum](https://spectrum.ieee.org/top-programming-languages/) - [Ben Frederickson](https://www.benfrederickson.com/ranking-programming-languages-by-github-users/) --- # Hello World! http://helloworldcollection.de/ --- # Llenguatges de programació - Llenguatge de baix nivell → Orientades a instruccions del hardware - Llenguatge ensamblador - Llenguatge màquina - Llenguatge d’alt nivell → Fàcil d’entendre per les persones Abstracció respecte el maquinari de l’ordinador. --- # Llenguatges interpretats vs compilats .full_width[![](img/compiler.png)] - Compilats: C, C++, Go and Rust - Interpretats: Python, Ruby, Javascript - Per saber-ne més: [guru99](https://www.guru99.com/difference-compiler-vs-interpreter.html) --- # kotlin compila a java bytecode ![](img/kotlinCompilation.png) --- # JVM - Des de l'intelliJ: Tools → Kotlin → Show Kotlin Bytecode. - llenguatges com Kotlin i Java compilen a bytecode - Bytecode és un nivell intermig que no s'executa sobre CPU, s'executa sobre una màquina virtual. - kotlin fa servir la Java Virtual Machine JVM - L'avantatge de fer servir una VM és la __portabilitat__ . El mateix bytecode s'executa en qualsevol màquina que té la VM --- # Errors - En temps de compilació el compilador comprova els errors (sintaxi) i aleshores converteix el codi font a bytecode. - Els runtime error no són detectats pel compilador, emergeixen en temps d'execució. - Runtime errors són més dificils de descobrir i arreglar. --- # Tipat - Kotlin és un llenguatge __Statically-typed__ , permet que la majoria d'errors es detectin el més aviat possible - Els llenguatges dinamics fan les comprovacions en temps d'execució (no cal definir el tipus de les variables) - En kotlin el tipus és inferit --- # Llenguatges que han influenciat kotlin - __FORTRAN__: FORmula TRANslation (1957): - Codificació d'equacions utilitzat en computació i àmbits científics - __LISP__: LISt Processor (1958) - llenguatge de computació científica i primer llenguatge que segueix el paradigma de la programació funcional - __ALGOL__: ALGOrithmic Language (1958) - introdueix sintaxis que persisteixen en molts llenguatges subseqüents --- - __COBOL__: COmmon Business-Oriented Language (1959) - Dissenyat pel món dels negocis, finances, i processament administratiu. - __BASIC__: Beginners’ All-purpose Symbolic Instruction Code (1964) - __Simula 67__, el primer llenguatge orientat a objectes (1967) - __Pascal__ (1970) - __C__ (1972), llenguatge d'alt nivell proper al hardware - __Smalltalk__ (1972) --- - __C++__: A Better C with Objects (1983) - __Python__: Friendly and Flexible (1990) - Un dels primers llenguatges open source - __Haskell__: Pure Functional Programming (1990) - __Java__: Virtual Machines and Garbage Collection (1995) - __C#__: Java for .NET (2000) - Extension functions: Una de les millores que kotlin hereda --- - __Scala__: SCALAble (2003) - Operator overloading. Hibrid object-functional - __Groovy__: llenguatge JVM dinamic (2007) - Primers en tractar el tema dels valors buits. En kotlin, els operadors ?. i ?: - __Kotlin__ (2011) --- # Llenguatges al llarg de la història [History of Programming Languages, O'Reilly](https://www.cs.toronto.edu/~gpenn/csc324/PLhistory.pdf) --- # Els LP més popular des 1965 - 2019
--- # Joc [Which is the language?](https://devawesome.io/guess-the-programming-language/) [Quizz](https://www.triviaplaza.com/programming-languages-quiz/#) --- # Bibliografia - Atomic kotlin, S. Isakova B. Eckel: https://leanpub.com/AtomicKotlin/read_sample - Conceptes basics de llenguatges de programació, J petit, F Orejas, A. Rubio https://jpetit.jutge.org/lp/02-introduccio.html#1