Jump to content
Sign in to follow this  
thoga31

FAQ - Quero aprender a programar! Por onde começo?

Recommended Posts

thoga31

Quero aprender a programar! Por onde começo?


FAQ

Uma questão recorrente no P@P® é sobre a iniciação à programação. “Por onde começo?”, “Qual a melhor linguagem para me iniciar?”.

Este FAQ tem por objectivo dar uma orientação inicial ao iniciado em programação, conhecidos maioritariamente por novatos, beginners ou newbies.

Um FAQ já foi feito, contudo, não responde a outras questões que já me colocaram, e limita-se a referir duas linguagens. Este FAQ pretende ser mais moderno e completo, incluindo uma lista de linguagens com um pequeno exemplo de código para cada uma.

Atenção, este FAQ pretende ser o mais imparcial possível. Não tem por objectivo incentivar o recurso a esta ou àquela linguagem de programação. Tem sim por objectivo orientar cada um nas suas necessidades e capacidades.

1. Por onde começo?

A programação assenta num exercício de raciocínio abstracto e lógico, capaz de resolver os mais variados problemas. As disciplinas básicas são a Lógica e a Algoritmia.

  • Lógica – ramo da filosofia que cuida das regras do bem pensar, ou do pensar correcto, sendo, portanto, um instrumento do pensar.
  • Algoritmia – ramo da matemática que cria um caminho para resolver um problema, permitindo chegar à solução, segundo um número finito de passos, resolúveis em tempo finito, com esforço finito.

2. Então, e como programo?

Após umas boas bases em Lógica e Algoritmia, há que escolher uma linguagem de programação, isto é, uma “língua” com uma sintaxe própria, palavras próprias e lógica própria, e que não é mais do que o meio do programador escrever as instruções de um programa a ser executado por um computador de modo a chegar à solução de um problema.

3. Mas onde escrevo os programas?

Recorrendo a um IDE da linguagem de programação que se escolher, isto é, um Ambiente de Desenvolvimento Integrado (Integrated Development Environment).

4. Qual a melhor linguagem de programação para se iniciar?

Depende de vários factores. O beginner poderá querer aprender a programar para realizar um projecto em específico, para trabalho escolar/universitário, ou tão-somente pela curiosidade e/ou prazer pela informática.

Se é para um projecto específico, deve-se escolher à partida uma linguagem que esteja direccionada a resolver problemas semelhantes ao do projecto.

Se é por curiosidade, poder-se-á escolher praticamente qualquer linguagem. Contudo, aconselha-se a entrada no mundo da programação com uma linguagem estruturada e mais simples de se ser entendida.

Mais à frente, apresenta-se uma lista com várias linguagens de programação, e exemplos de código.

5. O que são os paradigmas?

De forma simplista, um paradigma é a representação de um padrão a ser seguido. De forma simplista, pode-se dizer que, no mundo da informática e para o propósito deste FAQ, é um conjunto de regras de uma forma de programação. Alguns exemplos de paradigmas:

  • Paradigma estrutural.
  • Paradigma POO - Programação Orientada aos Objectos.
  • Paradigma dos Aspectos

6. Qual o paradigma recomendado para começar?

Apesar de o paradigma POO ser o mais utilizado e que torna o programa mais organizado, a iniciação recomenda o paradigma Estrutural, que é o paradigma que dá as regras básicas de estruturação lógica e funcional de um programa.

7. Tenho de aprender obrigatoriamente uma linguagem de programação. Não será difícil aprender uma outra ao mesmo tempo, nem que seja por ser mais fácil de modo a aprender melhor e mais rápido?

Depende de pessoa para pessoa. Mas se a segunda linguagem é mais fácil, em princípio não haverá problema. Contudo, se a primeira linguagem segue, por exemplo, o Paradigma POO, é recomendável que a segunda também o siga, para que a aprendizagem seja paralela e não distinta, o que pode dificultar em vez de facilitar.


Algumas linguagens de programação

Pascal

Ano: 1971

Principal/is autor(es): Niklaus Wirth

Paradigma dominante: Estrutural

Derivada de: ALGOL-60 e ALGOL-68

Influenciou, ou derivou: Delphi, Java

Tipo de output: consola

Hello World:

program hello_world;
uses crt;
begin
     writeln('Hello World!');
     readln;
end.

Tutorial na WikiP@P

Visual Basic .NET

Ano: 2002

Principal/is autor(es): The Visual Basic Team (Microsoft)

Paradigma dominante: POO

Derivada de: Visual Basic

Influenciou, ou derivou: ---

Tipo de output: consola ou GUI

Hello World:

Module Module1
    Sub Main()
        Console.WriteLine("Hello World")
        Console.ReadKey(True)
    End Sub
End Module

Artigos na WikiP@P

C

Ano: 1972

Principal/is autor(es): Dennis Ritchie

Paradigma dominante: estrutural

Derivada de: B

Influenciou, ou derivou: C++

Tipo de output: consola

Hello World:

#include <stdio.h>

int main(void)
{
  printf("Hello world\n");
  return 0;
}

Artigos na WikiP@P

C++

Ano: década de 80

Principal/is autor(es): Bjarne Stroustrup

Paradigma dominante: multi-paradigma

Derivada de: C

Influenciou, ou derivou: C#, D, Java, PHP

Tipo de output: consola, ou GUI (Visual C++)

Hello World:

#include <iostream>

int main()
{
  std::cout << "Hello World!" << std::endl;
  return 0;
}

Documento na WikiP@P

C#

Ano: 2001

Principal/is autor(es): Microsoft

Paradigma dominante: multi-paradigma

Derivada de: C++, Java, Delphi

Influenciou, ou derivou: D, Java 5, F#

Tipo de output: consola ou GUI

Hello World:

using System;
class ExampleClass
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, world!");
    }
}

Artigos na WikiP@P

Haskell

Ano: 1990

Principal/is autor(es): vários

Paradigma dominante: funcional

Derivada de: Scheme, APL, Miranda

Influenciou, ou derivou: Python, Perl 6, C#, Visual Basic 9.0

Tipo de output:

Hello World:

module Main where

main :: IO ()
main = putStrLn "Hello World!"

Tutorial na WikiP@P

Introdução na WikiP@P

Java

Ano: 1995

Principal/is autor(es): Sun Microsystems

Paradigma dominante: POO

Derivada de: Delphi, Objective-C

Influenciou, ou derivou: D, PHP, Python

Tipo de output: consola, ou GUI

Hello World:

public class HelloWorld {
   public static void main(String[] args) {
       System.out.println("Hello world!");
   }
}

Tutorial na WikiP@P

Lua

Ano: 1993

Principal/is autor(es): Roberto Ierusalimschy

Paradigma dominante: multi-paradigma

Derivada de: C++, Scheme

Influenciou, ou derivou: Io, Falcon

Tipo de output: consola ou GUI

Hello World:

print("Hello World!")

Artigo da Revista na WikiP@P (Parte 8 do artigo)

PHP

Ano: 1995

Principal/is autor(es): Rasmus Lerdorf

Paradigma dominante: multi-paradigma

Derivada de: C, Java

Influenciou, ou derivou: RadPHP (PHP4Delphi)

Tipo de output: web

Hello World:

<?php
    echo "Hello World!";
    //";" at the end is optional, so is the "?>"
?>

Artigos na WikiP@P

Python

Ano: 1991

Principal/is autor(es): Guido van Rossum

Paradigma dominante: multi-paradigma

Derivada de: ALGOL-68, Haskell

Influenciou, ou derivou: Cobra, D, Falcon, JavaScript

Tipo de output: consola ou GUI

Hello World:

print("Hello World")

Introdução na WikiP@P (Artigo da Revista PROGRAMAR)

Brainfuck

Linguagem esotérica, não aconselhável para iniciação.

Ano: 1993

Principal/is autor(es): Urban Dominik Müller

Paradigma dominante: esotérico

Derivada de: False

Influenciou, ou derivou: PATH, PBrain

Tipo de output: consola

Hello World:

++++++++++
[>++++++++>+++++++++++>---------->+++>++++++++>++++++++++++>+++++++++++>++++++++++>+++++++++++>+++
<<<<<<<<<<-]                    Inicia as células com os valores: 80, 110, 156 (256 - 100), 30, 80,
                                   120, 110, 100, 110, 30
>-.                             Imprime 'O'
>--.                            Imprime 'l'
>++++.                          Imprime 'á'
>++.                            Imprime ' '
>---.                           Imprime 'M'
>---.                           Imprime 'u'
>.                              Imprime 'n'
>.                              Imprime 'd'
>+.                             Imprime 'o'
>+++.                           Imprime '!'
,                               Aguarda alguma tecla ser pressionada

Pede-se a participação da comunidade para alargar esta lista.

Mais questões, deverão ser colocadas para que sejam respondidas e o FAQ expandido.

Já agora, se és beginner, boa sorte nesta aventura e arte que é a programação! :)


Knowledge is free!

Share this post


Link to post
Share on other sites
Localhost

De referir também a Wiki P@P que tem alguns tutoriais sobre algumas das linguagens referidas neste tópico...

*UPDATE*

Já agora, para quem gosta de coisas estranhas, um «Hello World» em BrainFuck (uma linguagem esotérica)...

++++++++++[>++++++++>+++++++++++
>---------->+++>++++++++>+++++++
+++++>+++++++++++>++++++++++>+++
++++++++>+++<<<<<<<<<<-]>-.>--.>
++++.>++.>---.>---.>.>.>+.>+++.,

Link: Wikipédia - Linguagens esotéricas.


here since 2009

Share this post


Link to post
Share on other sites
thoga31

De referir também a Wiki P@P que tem alguns tutoriais sobre algumas das linguagens referidas neste tópico...

A lista está actualizada com links para a WikiP@P. De referir que a Wiki inclui um tutorial completo de pascal, também disponível em PDF, e um tutorial completo, mas por acabar, é certo, de Java. :D

Brainfuck adicionada, apesar de não aconselhada para iniciação. :)


Knowledge is free!

Share this post


Link to post
Share on other sites
RSFalcon7

para além destas há muitas mais linguagens de programação, vou por algumas que retirei da wikipédia e o que sei sobre elas

  • Assembly: quase código máquina, extremamente difícil de programar
  • BASIC
  • COBOL
  • Fortran: utilizado por matemáticos, está em desuso
  • Lisp: paradigma funcional e tem muitos parenteses
  • Logo
  • Simula
  • Prolog: paradigma lógico, utilizado para ensino de algoritmos de inteligência artificial, detestei!
  • Scratch: excelente para começar
  • Smalltalk
  • ActionScript
  • Delphi
  • MATLAB: utilizado por matemáticos, acho que também é utilizado para filtros no photoshop
  • PL/SQL: linguagem de comunicação do Oracle.
  • Transact-SQL
  • Visual Basic
  • Object Pascal
  • Objective-C: utilizado pela Apple
  • Go: criado pela google a poucos anos, têm crescido muito... e é bastante direccionada à programação concorrente
  • JavaScript
  • Perl: linguagem script largamente utilizada, comunidade muito activa, especialmente pela CPAN
  • Ruby: linguagem script

Quando tiver mais um tempo, coloco mais informações e até mais linguagens.

Se alguém quiser acrescentar/corrigir estejam completamente a vontade

Share this post


Link to post
Share on other sites
KTachyon

Pois, e para além dessas, muitas mais há. Inclusivé, muitas variantes de Assembly (mesmo dentro da mesma arquitectura de processador), muitas variantes de BASIC, e muitas linguagens 'esotéricas' (que, tecnicamente, são as mais fáceis de criar pela simplicidade das instruções).

PS: @thoga31 beginner é assim que se escreve :P


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
thoga31

Apenas referi algumas, para ter uma lista completa o tópico (quase que) demoraria a carregar :P


Knowledge is free!

Share this post


Link to post
Share on other sites
Localhost

Corrige também aqui:

Já agora, se és begginer, boa sorte nesta aventura e arte que é a programação! :P

here since 2009

Share this post


Link to post
Share on other sites
thoga31

LOL. Estava complicado esse dia em que escrevi o FAQ. :P

Done!


Knowledge is free!

Share this post


Link to post
Share on other sites
Localhost

Utiliza o search do teu browser. Estou a ser picuinhas mas agora para não escapar nada.

4. Qual a melhor linguagem de programação para se iniciar?

Depende de vários factores. O begginer poderá querer aprender a programar para realizar um projecto em específico, para trabalho escolar/universitário, ou tão-somente pela curiosidade e/ou prazer pela informática.

:):P


here since 2009

Share this post


Link to post
Share on other sites
thoga31

Utiliza o search do teu browser. Estou a ser picuinhas mas agora para não escapar nada.

:D:P

Que dia péssimo esse. LOOL. Nunca me esqueço por causa da palavra "begin": um G, logo dois N. :)

Vou corrigir.


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Pk será que se chama BrainFuck ?

Acho que consigo imaginar xD

Lixa a cabeça a qualquer um, lol :(


Knowledge is free!

Share this post


Link to post
Share on other sites
Orgon

Uma pergunta, alguém usa o BrainFuck Actualmente???

Se utilizar merece um prémio nobel.

Share this post


Link to post
Share on other sites
thoga31

Por diversão ou assim, sim, utiliza-se.

Mas decerto que há quem já o tenha utilizado para outro tipo de aplicações. Quem lhe apanhar o jeito e o gosto logo o faz :)


Knowledge is free!

Share this post


Link to post
Share on other sites
KTachyon

Não é como se pudesses fazer muita coisa com ela, mas...

++++++++[>++++++++++>++++++++<<-]>.>.<.,

Quem souber ir espreitar a tabela ASCII e multiplicar, é capaz de dizer o que isto faz :P

EDIT: Penso que acertei, mas só compilando :P

Edited by KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
thoga31

Não é como se pudesses fazer muita coisa com ela, mas...

++++++++[>++++++++++>++++++++<<-]>.>.<.,

Quem souber ir espreitar a tabela ASCII e multiplicar, é capaz de dizer o que isto faz :P

EDIT: Penso que acertei, mas só compilando :P

Lembrei-me há pouco de teres colocado isto, e nunca me tinha dedicado a entender... mas agora fui compilar, e eis o output:

P@P

Pessoalmente, continuo a preferir algo como isto:

print("P@P")

:D


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.