Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SandroBerto

Linguagens de Prgramação?

Recommended Posts

Galera entrei neste fórum para saber um pouco mais de programação e fiquei super hiper perdido. Bom primeiramente gostaria de saber o que são e quais as aplicações destas linguagens: 1) PHP, 2) JAVA, 3) C++, 4) C#, 5) .NET; 6) ASP; 7) RUBY; 8) PHYTON.

Fiz um curso básico, bem básico de web designer e adorei, aprendi um pouco de html e css, e hoje estou fazendo um curso, tecnólogo em Análise de Sistemas na Unip em Sorocaba, onde a linguagem utilizada é o C++, ainda é o primeiro semestre e estou bem perdido, Como tenho 38 anos, não dá pra ficar testando, tenho que decidir o que é melhor pra mim, eu gosto e quero desenvolver web sites, assim como poderia trabalhar em empresas para gerenciar web sites. Gostaria dessa ajuda inicial em minha carreira, um esclarecimento sobre as linguagens aqui já mencionadas e dicas para eu seguir a minha carreira na web. Muito obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi :huh:

Bom primeiramente gostaria de saber o que são e quais as aplicações destas linguagens:

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) PHP, 2) JAVA, 3) C++, 4) C#, 5) .NET; 6) ASP; 7) RUBY; 8) PHYTON.

1) WebProgramação, bem parecido com o HTML em muitos aspectos

2)Uma linguagem bem completa na minha opinião, com JAVA da para criar aplicativos para mobile e bons programas para desktop, mas a acho um pouco lenta.

3)Como disse que fazia um curso sobre C++ não vou nem comentar

4)É uma linguagem muito boa, uma das mais completas na minha opinião, programo C# à 3 anos, com ela é possível a criação de aplicativos para Android

5)Vem da biblioteca .NET FrameWorks do Windows, é um serviço de "Common Language RunTime"

6)Um tipo de linguagem para Web que também utiliza o .NET, para mim a melhor de WebProgramação

7, 8)São outras linguagens mas não sei a fundo elas então não irei comentar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cada linguagem vai transformar a forma como você pensa. Algumas linguagens permitem construir programas que são mais fáceis de manter e estender, e algumas te forçam a escrever seus códigos de forma caótica.

 

Não há um motivo para não aprender uma linguagem. Se ela for 'ruim', é importante aprendê-la e usá-la para descobrir o que a torna ruim, e como evitar cenários em que se expressa algoritmos e estruturas de dados de forma semelhante à maneira comum na linguagem ruim.

 

Tirando isso, costuma-se achar uma linguagem 'boa' para resolver determinado problema quando um grupo grande de pessoas já criou implementações e bibliotecas que tornem seu uso pra este fim prático e eficiente.

 

Feitas essas observações, todas as linguagens são equivalentes no que diz respeito ao que se pode de fato fazer com elas. O que se chama de 'finalidade' da linguagem é o tipo de problema que é geralmente resolvido com ela. Exemplo: JavaScript é dita ser uma 'linguagem de programação para a web'. Isto é simplesmente pelo fato de ela ter sido usada em navegadores desde o início. Contudo, implementações estão sendo criadas para rodar javascript em servidores e terminais (vide Node.js).

 

Dito isto, saiba que você precisará dedicar muitos anos pra conseguir fazer um bom trabalho nesta área. Cada linguagem de programação é como uma variante de um jogo de xadrez. Aprender as regras é facil - o difícil é saber jogar. Seguem os problemas geralmente atacados pelas linguagens sobre as quais você perguntou:

 

 

PHP

 

Costuma rodar em servidores e estar intimamente relacionada a processamento e geração de dados vindos de / para clientes web. Não gosto de PHP. Ela é mal organizada e os sistemas desenvolvidos nela com frequência possuem amarração muito forte entre modelagem e visão. Além disso, as APIs não são consistentes, há muito mais mutabilidade do que deveria haver e a performance das implementações, em geral, é ruim. O lado bom é a facilidade de configuração e integração com servidores web.

 

 

Java

 

De propósito geral. Usada em diversos tipos de ambientes, de servidores web a celulares. A característica mais marcante da linguagem é a proposta de ser portável. Gosto de Java. Seus maiores problemas são decisões de projeto erradas feitas há vários anos, e que não podem ser desfeitas sem que se quebre código antigo. Isto é um problema sério, já que tem muito código em Java rodando há varios anos, nos mais variados tipos de contextos. Considero fundamental aprendê-la para entender por que alguns problemas são sérios - mutabilidade, consistência de APIs, encapsulamento, sincronização em ambientes concorrentes, etc.

 

 

C++

 

Também de propósito geral, mas sem a proposta de ser portável. A maior proposta é oferecer orientação a objetos de forma natural perdendo o mínimo de velocidade possível. Costuma-se dizer que ela é "só 3 vezes mais lenta que C". Isto é muito vago e difícil de aplicar - soluções desenvolvidas com a STL, por exemplo, costumam ser ~200 vezes mais lentas que soluções desenvolvidas usando a glibc. De maneira geral, não gosto dela, e o motivo principal se torna aparente sem que se tenha que aprender muito: a linguagem é grande demais, desorganizada e confusa, tendo ainda carregado muitos males de C. Um pouco mais sobre isto está aqui.

 

 

C#

 

Mais moderna e organizada que Java, mais lenta e mais simples que C++. É menos popular que as 2 anteriores, mas incorpora algumas 'boas práticas' das outras de forma natural. Pode-se dizer que é um passo evolutivo à frente de Java e C++. Gostei muito do pouco que aprendi. Até onde sei, é usada no desenvolvimento pra desktops e celulares.

 

 

ASP

 

Sei muito pouco sobre esta, portanto prefiro não comentar muito. É o "PHP da Microsoft".

 

 

RUBY

 

Moderna e prática. Foca em questões de usabilidade e legibilidade, e incorpora aspectos de linguagens funcionais enquanto mantém orgulhosamente uma abordagem 'puramente orientada a objetos'. Sua performance (com relação à velocidade) é muito criticada, mas isto é natural em linguagens novas. Implementações mais antigas são sempre mais eficientes, tanto no que diz respeito ao uso de memória quanto à rapidez de execução. Se C# é o sucessor de Java e C++, Ruby é o de Perl e Python. É muito usada no desenvolvimento web, mas vejo muita gente criando programas pra desktop em Ruby. Não sei em que pé anda o desenvolvimento de GUIs.

 

 

PHYTON

 

Também de 'propósito geral', começou a ser usada, há alguns anos, pra desenvolvimento web. É legível e implementa orientação a objetos de forma bem mais natural que a sua 'principal competidora' (Perl).

 

 

.NET não é uma linguagem. É uma plataforma que veio pra substituir a Win32API e Win64API (as duas são horríveis).

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Cada linguagem vai transformar a forma como você pensa. Algumas linguagens permitem construir programas que são mais fáceis de manter e estender, e algumas te forçam a escrever seus códigos de forma caótica.

 

Penso eu, que não é a linguagem que vai fazer você mudar a forma de pensar. Uma vez que você tenha lógica de programação, conheça sobre algorítimos e fluxogramas, o que sobra são comandos e sintaxes ao qual cada linguagem de programação tem suas particularidades.

 

Posso estar enganado, mas na minha opinião os programadores que querem aprender por conta própria deveriam antes de partir para aprender uma determinada linguagem de programação deveriam dominar a tríade acima.

 

[ ]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Penso eu, que não é a linguagem que vai fazer você mudar a forma de pensar. Uma vez que você tenha lógica de programação, conheça sobre algorítimos e fluxogramas, o que sobra são comandos e sintaxes ao qual cada linguagem de programação tem suas particularidades.

 

Posso estar enganado, mas na minha opinião os programadores que querem aprender por conta própria deveriam antes de partir para aprender uma determinada linguagem de programação deveriam dominar a tríade acima.

 

[ ]'s

 

Talvez sua opinião mude conforme aprenda mais linguagens e com mais profundidade. Construções sintáticas influenciam a forma como os conceitos envolvidos nos algoritmos são organizados, e o nível em que o raciocínio se desenvolve.

 

De certa forma, existe uma equivalência no poder computacional entre todas as que possuírem completude de Turing. Mas o nível e a forma em que o raciocínio sobre a solução do problema se dá varia enormemente de linguagem para linguagem. A seguinte função em Haskell retorna uma lista contendo apenas os elementos de seu argumento que forem letras maiúsculas:

 

maiusculas :: String -> String
maiusculas l = filter (\ x -> x `elem` ['A' .. 'Z']) l

 

Em uma linguagem brutalmente primitiva como C, uma função equivalente teria que ser modelada da seguinte forma:

 

#include <ctype.h>

/*
compilar: gcc -std=c99 -Wall -Wextra -pedantic -Werror [arq.c]

dest deve apontar para um vetor suficientemente grande para
 conter todos os caracteres maiúsculos de orig mais '\0'.
orig deve estar devidamente inicializado e deve ter como último
 valor '\0'.
*/

void maiusculas(char *dest, char *orig)
{
   while (*orig)
   {
if (isupper(*orig))
{
    *dest++ = *orig;
}
orig++;
   }

   *dest = '\0';
}

 

Logo se vê que a forma de pensar é diferente nas duas implementações. A distância entre os paradigmas imperativo e funcional é gritante, e impacta profundamente na modelagem de soluções. Apesar de as duas linguagens terem o mesmo poder computacional, conceitos como aplicação parcial de funções, funções-lambda, pattern matching e type classes, presentes em Haskell e não em C, tornam a primeira mais expressiva e alteram a forma com que problemas são abordados. Além disso, note que em C não existem listas, portanto usei 'vetores' para armazenar meus valores, usando operadores diferentes e conhecimento diferente sobre a representação dos dados (por exemplo, o fato de que '\0' deve terminar qualquer string, ou de que o valor de qualquer vetor é um ponteiro para seu primeiro elemento).

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Talvez sua opinião mude conforme aprenda mais linguagens e com mais profundidade. Construções sintáticas influenciam a forma como os conceitos envolvidos nos algoritmos são organizados, e o nível em que o raciocínio se desenvolve.

 

 

Logo se vê que a forma de pensar é diferente nas duas implementações. A distância entre os paradigmas imperativo e funcional é gritante, e impacta profundamente na modelagem de soluções. Apesar de as duas linguagens terem o mesmo poder computacional, conceitos como aplicação parcial de funções, funções-lambda, pattern matching e type classes, presentes em Haskell e não em C, tornam a primeira mais expressiva e alteram a forma com que problemas são abordados. Além disso, note que em C não existem listas, portanto usei 'vetores' para armazenar meus valores, usando operadores diferentes e conhecimento diferente sobre a representação dos dados (por exemplo, o fato de que '\0' deve terminar qualquer string, ou de que o valor de qualquer vetor é um ponteiro para seu primeiro elemento).

 

Saudações meu caro guidjos,

 

Antes de continuar, me desculpe a demora em responder seu quote.

 

Veja bem, não estou discutindo a forma de pensar nas implementações e sim que, "Uma vez que você tenha lógica de programação, conheça sobre algorítimos e fluxogramas, o que sobra são comandos e sintaxes ao qual cada linguagem de programação tem suas particularidades."

 

Subvertendo a ordem dos factos, e, seu eu levar o seus exemplo sobre construção sintática ao pé da letra, eu exemplificaria desta forma:

 

"Mesmo preso, os juízes da 17ª Vara Criminal autorizaram Cavalcante a tomar posse como prefeito. Ele deixa a prisão e ainda nesta sexta-feira segue para o município, a 63 km de Maceió, para ser empossado pela Câmara."

 

O defeito da construção sintática está no facto de o período iniciar-se com um predicativo que não se refere ao sujeito. A expressão "mesmo preso", dada a sua posição, é entendida como atributo do sujeito ("os juízes") - é a concordância (no plural) que nos leva a atribuir a condição ao objeto ("Cavalcante"). Imagine que a autorização viesse de apenas um juiz: "Mesmo preso, o juiz da 17ª Vara Criminal autorizou Cavalcante a tomar posse...". Isso parece suficiente para atestar a impropriedade da construção.

 

Em face disso, fica complicado dissertarmos sobre contrução sintática, uma vez que dado os conhecimentos das sintaxes inerentes à cada linguagem de programação, uma vez uctilizada com lógica e algorítimos correctos não há nenhúma dificuldade em se aprender quaisquer linguagens de programção.

 

Eu particularmente uctilizo de meus conhecimentos de lógica, algorítimo e fluxogramas apenas para aprender comandos e sintaxes peculiares de cada linguagem de programação.

 

Talvez eu esteja percorrendo um caminho mais extenso para aprender, mas é facto que vêm dando resultados a mais de 30 anos.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

A diferença entre linguagens não é somente sintática. É também semântica.

 

Saudações meu caro guidjos,

 

Mas isso é óbvio; tanto na linguagens de programação como na fala em diversas linguas teremos diferença entre sintaxe e semântica. Não discuto isso, o que discuto é, o tripé da lógica, algorítimos e fluxogramas para se aprender quaisquer linguagens de programação.

 

Pelos seus exemplos, tenho por convicção que no caso da sintaxe, ela se ocupa do que algo significa, enquanto a semântica se deleite sobre as estruturas ou padrões formais do modo como esse algo é expresso (por exemplo, escritos ou falados). Em todos os exemplos citados, em nada mudaria a forma como pensaríamos (lógica) ao criarmos um code ou então, construções sintáticas influenciariam a forma como os conceitos envolvidos nos algoritmos são organizados, muito menos o nível do raciocínio, da lógica aplicados em um fluxograma.

 

Creio ser muito mais fácil aprender sobre sintaxes, semanticas, comandos, inerentes à cada linguagem de programação do que aprender aplicá-los em um code com lógica.

 

Resumindo meu ponto de vista, do que me adianta conhecer apenas as palavras se eu não sou souber colocá-las em seu devido lugar, concordância verbal, tempo, pontuação, etc. Imagine você(s) se ao invés de postar como fiz agora se eu invertesse todo as ordens das palavras e verbos; simplesmente invertesse o texto sem uma lógica, sem algorítimo e não soubesse coloca-lo sob um fluxograma como este post.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.