Tudo o que Você Sempre Quis Saber Sobre Linguagens de Programação* (*Mas Tinha Medo de Perguntar) Diego Padilha Rubert FACOM Por quê? ● O aprendizado em Algoritmos e Programação visa lógica de programação e estruturas de dados ● No mercado de TI diversas linguagens são utilizadas ● Conhecendo uma linguagem, é fácil aprender outras ● Algumas você pode aprender na FACOM Diego Rubert Linguagens de Programação 2/40 Antes de começar... Qual a melhor linguagem de programação? Diego Rubert Linguagens de Programação 3/40 Antes de começar... Diferentes linguagens para diferentes propósitos Diego Rubert Linguagens de Programação 4/40 Antes de começar... ● Veremos linguagens: – Compiladas – Compiladas para uma VM – Interpretadas Diego Rubert Linguagens de Programação 5/40 C ● Popular em sistemas operacionais e aplicações embarcadas ● Muito utilizada em “programação científica” ● Boa base para programação ● Disciplinas: Algoritmos de Programação I e II * Diego Rubert Linguagens de Programação 6/40 C++ ● Comum em muitos aplicativos do Linux (Firefox) e Jogos ● Não inclui bibliotecas como rede e interface gráfica ● Também é utilizada em “programação científica” ● Como C, porém orientada a objetos e mais flexível ● Disciplina: Estruturas de Dados e Programação * ● Referência: cppreference.com Diego Rubert Linguagens de Programação 7/40 Java ● Linguagem OO multiplataforma (JVM) ● Sintaxe semelhante ao C/C++ ● Inclui bibliotecas para interface, rede, banco de dados... ● Utilizada em aplicações desktop, web (jsf) e móveis! Diego Rubert Linguagens de Programação 8/40 Java ● ● Possui frameworks para web (VRaptor), persistência (Hibernate), testes (JUnit), ... Disciplinas: Linguagem de Programação OO Estruturas de Dados e Programação OO Programação para a Web Algoritmos e Programação I e II * Diego Rubert Linguagens de Programação 9/40 C# ● Utilizada em aplicativos para Windows e Web (.NET) ● Sintaxe muito semelhante ao Java ● ● Framework com ferramentas muito poderosas e grande quantidade de bibliotecas nativas Principal ferramenta de desenvolvimento (Visual Studio) pode ser obtida pelos estudantes da FACOM através do convênio com a Microsoft (DreamSpark) Diego Rubert Linguagens de Programação 10/40 C# ● Por onde começar: - MSDN - Rede do desenvolvedor da Microsoft: fóruns, tutoriais, etc. - C# à partir do Java Diego Rubert Linguagens de Programação 11/40 Objective-C ● Linguagem OO de propósito geral para OS X e iOS ● Superconjunto da linguagem C, orientada à objetos Diego Rubert Linguagens de Programação 12/40 Objective-C ● Por onde começar: – Necessita um Mac com Xcode, ambiente completo para código, interface, testes... – Centro de desenvolvedores Apple (em inglês) developer.apple.com Diego Rubert Linguagens de Programação 13/40 PHP ● ● ● ● Muito popular entre desenvolvedores web Para desenvolvimento de sistemas e geração de páginas dinâmicas (é executada no servidor web) Sintaxe semelhante ao C/C++ Tipagem dinâmica Diego Rubert Linguagens de Programação 14/40 PHP ● Pode ser utilizado com orientação à objetos ● Possui frameworks robustos: Zend, CakePHP, Symfony ● Utilizado pelo Wordpress, Facebook e 200 milhões+ de sites ● Disciplina: Programação para a Web ● Por onde começar: – Instale um servidor web apache com php – http://php.net/manual/pt_BR/getting-started.php Diego Rubert Linguagens de Programação 15/40 JavaScript ● Não tem relação com Java, exceto pela sintaxe ● Linguagem de scripts para navegadores * ● Suporta orientação à objetos ● Tipagem dinâmica ● Páginas dinâmicas sem recarregar e AJAX (jQuery) Diego Rubert Linguagens de Programação 16/40 JavaScript ● Disciplina: Programação para a Web ● Por onde começar: – developer.mozilla.org/pt-BR/learn/javascript (também HTML e CSS) – w3schools.com (também HTML, CSS, PHP, SQL e Jquery) – Jquery: codecademy.com/pt-BR/courses/web-beginner-pt-BR-h1pzb (também HTML, Ruby e Python) Diego Rubert Linguagens de Programação 17/40 JavaScript Diego Rubert Linguagens de Programação 18/40 JavaScript Diego Rubert Linguagens de Programação 19/40 Assembly ● ● Linguagem de baixo nível, determina diretamente as instruções de máquina Situações onde é preciso um binário enxuto, mas não estão disponíveis bibliotecas compartilhadas ● Boot de sistemas operacionais ● Firmwares e sensores ● Drivers de dispositivos Diego Rubert Linguagens de Programação 20/40 Assembly ● ● ● Análise de binários (engenharia reversa) e vulnerabilidades Diversas outras situações específicas Disciplina: Linguagem de Montagem Diego Rubert Linguagens de Programação 21/40 Python ● Linguagem fácil para iniciantes: – Legibilidade – Sintaxe compacta ● Tipagem dinâmica ● Conjunto extenso de bibliotecas padrão ● Para scripts, aplicações dektop, web, móveis ● Utilizado por: Instagram, Google, Yahoo!, NASA... Diego Rubert Linguagens de Programação 22/40 Python Diego Rubert Linguagens de Programação 23/40 Python ● ● Framework web Django (Instagram, Mozilla, OpenStack) Plone CMS (governo federal, caixa, science.nasa.gov, fbi.gov, ...) Diego Rubert Linguagens de Programação 24/40 Python ● ● Aplicações: – Blender 3D – OpenStack Scripts Diego Rubert Linguagens de Programação 25/40 Python ● Por onde começar: – Instale o python com console: python.org/download – Experimente no console – codecademy.com/pt-BR/tracks/python – codecademy.com/pt-BR/courses/lang/python Diego Rubert Linguagens de Programação 26/40 Python ● Por onde começar: – pythontutor.com Diego Rubert Linguagens de Programação 27/40 Python ● Por onde começar: – Luiz Eduardo Borges: Python para desenvolvedores ark4n.wordpress.com/python – PET-Tele/Univ. Fed. Fluminense → Apostila de Python www.telecom.uff.br/pet/petws/?pagina=downloads/apostilas Diego Rubert Linguagens de Programação 28/40 Ruby ● ● ● ● Linguagem amigável para iniciantes Bastante utilizada em scripts e sites (Ruby on Rails) Tipagem dinâmica Orientada a objetos (TUDO é um objeto, como em Python) Diego Rubert Linguagens de Programação 29/40 Ruby Diego Rubert Linguagens de Programação 30/40 Ruby ● ● Ruby on Rails: – Framework para aplicações web – Twitter, Scribd, GitHub, Portal Educação, … Por onde começar: – Baixe em rubyinstaller.org (e experimente no irb) – codecademy.com/pt-BR/tracks/ruby – codecademy.com/pt-BR/courses/lang/ruby Diego Rubert Linguagens de Programação 31/40 Bash ● Um dos dialetos do shell (sh) ● Muito utilizada em estações/servidores Linux ● Linguagem de scripts (sistemas UNIX): – Backup – Simplificar comandos – Automatização de tarefas em geral Diego Rubert Linguagens de Programação 32/40 Bash ● Possui: – Estruturas condicionais (if, elif, else, case) – Estruturas de repetição (for, while, until) – Funções – Vetores – Operações aritméticas – Substituição em strings Diego Rubert Linguagens de Programação 33/40 Bash Diego Rubert Linguagens de Programação 34/40 Bash Diego Rubert Linguagens de Programação 35/40 Bash ● Dialog, GDialog, Kdialog, Zenity, … kdialog --title "Meu script" --msgbox "Essa é uma mensagem de teste, ok?" Diego Rubert Linguagens de Programação 36/40 Bash ● ● Por onde começar: – Aprender a utilizar comandos desejados – Introdução ao Shell Script (Aurélio Marinho Jargas) – aurelio.net/shell – Livro “Shell Script Profissional” Referências úteis: – Canivete Suíço do Shell (Bash) Diego Rubert Linguagens de Programação 37/40 Sites interessantes ● codecademy.com/learn Diego Rubert Linguagens de Programação 38/40 Sites interessantes ● pythontutor.com Diego Rubert Linguagens de Programação 39/40 Fim Perguntas? Diego Rubert Linguagens de Programação 40/40