Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Entaum galera to abrindo esse topico pra galera postar dicas de como programar, ow de como você msm programa, ql metodo usa, a logica inicial, se você pensa + estruturado ow Orientado a Objeto..
Bom para iniciar o topico entaum vo deixar umas dicas de como eu (quit) programo:
Programando com quitZAUMMM
1 - Umas das principais coisas (entre aspas) [e a identacao do codigo, nossa gente vcs naum imaginam a facilidade de se ler um codigo identado, imaginem algo assim:
for (i = 0; i < n; i++) {
scanf("%d %d", &codigo, &media);
if (media > melhor_media){
melhor_media = media;
indice_melhor[0] = codigo;
for(int x=1;x<n;x++) indice_melhor[x] = 0;
}
else {
if (media == melhor_media) indice_melhor[j++] = codigo;
}
}a 'e saco ler isso, agora se você se depara com um codigo + claro assim:
for (i = 0; i < n; i++) {
scanf("%d %d", &codigo, &media);
if (media > melhor_media){
melhor_media = media;
indice_melhor[0] = codigo;
for(int x=1;x<n;x++) indice_melhor[x] = 0;
}
else {
if (media == melhor_media) indice_melhor[j++] = codigo;
}
}você perdera menos tempo tentando entendeR ;D
2 - Se você naum tiver uma boa IDE use o padrao hungaro nas variaveis, assim você naum c perdera no seu codigo e naum precisara ficar subindo td hora na declaracao das variaveis para saber seu tipo..
+ COMO DISSE C você TEM UMA BOA IDE DESCARTE OQ EU DISSE, veja abaixo suas diferencas:
//sem o padrao hungaro
int var1, var2, var3;
char var4, var5, var6, var7;
float var8, var9;//com padrao hungaro
int iVar1, iVar2, iVar3;
char cVar4, cVar5, cVar6, cVar7; //caso seja vetor, coloque sVar (você entedera como string)
float fVar8, fVar9;
bool bVar10;isso ajuda a c você tiver um programa parecido, jah tera funcoes q tera apenas q copiar e colar.
primeiro pense, escreva, analize bem como funcionaram as coisas e depois codifique =]
podemos dar de exemplo o SelectionSort:
void selectionSort(int *vetor, int tamanho)
{
int k;
for( int i = 0; i < tamanho; i++ ){
k =i;
for( int j = tamanho - 1; j > i; j-- ){
if(vetor[j] < vetor[k])
k = j;
}
swap( vetor[i], vetor[k] );
}4 - Deixe seu programa elegante ;D.
Se você naum estiver usando uma linguagem case-sensitive, programe bonitinho ;D..
ao invez de :
if (balgumacoisa) set field_changed_value of arquivo_dd field arquivo.nome to snomepor isso:
If (bAlgumaCoisa) Set Field_Changed_Value Of Arquivo_Dd Field Arquivo.Nome To sNome
5 - Teste teste e teste muito seu programa para naum ser um POGer..
uma das principais coisas q eu vejo acontecer e gente falar q fez tal programa e compilo e deu certo, e chega na hora de apresentar o programa surge uns bugzinhos xD.. soh q antes de entregar teste bastante, tds os casos possiveis..
LEMBREM-SE USUARIO [E F****, E TD Q ACONTECE DE ERRADO PARA O USARIO A CULPA [E DO SISTEMA.
A INTERNET CAIW, [E O SISTEMA... [e gente essa parte [e realmente complicada, qnd você vai em algum cliente e ouve mal do seu sistema =[.
6 - Nunca Desista...
Outro ponto importante, [e qnd a gente num sabe oq fazer, ow como fazer..
pra isso existe uma otima ferramente disponivel na internet, naum sei c deveria falar, pois eu acho ela maravilhosa, + vo compartilhar com vcs: o o o o [http://forum.imasters.com.br/public/style_emoticons/default/searchbeforeposting.gif!!! naum tem desculpa q naum sabe, ow algo parecido.. basta c empenhar na coisa q ela saira..
Sempre qnd naum souber onde esta o erro, encha o programa de printfs de box, de td q puder..
ate saber onde o erro acontece..
7 - Pense bem c o programa sera estruturado ow Orientado a Objeto.
Bom nesse ponto naum posso opinar muito xD, pois como estudei bastante linguagem C, tenho muitos vicios de programacao estruturada, quem migrar para o C++, jah podera utilizar as tecnicas de orientacao a objeto q sao: encapsulamento, poliformismo e heranca..
Bom galera ta ai algumas coisas legais para c ler e discutir..
ESPERO Q VCS PARTICIPEM AKI, FALANDO DO SEU MODO DE PROGRAMACAO, OW ATE MSM DISCUTINDO O METODOS DOS OUTROS,..
[E ISSO AI PESSOAL VAMOS MOVIMENTAR IDEIAS ;D
[http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Se você naum tiver uma boa IDE use o padrao hungaro nas variaveis, assim você naum c perdera no seu codigo e naum precisara ficar subindo td hora na declaracao das variaveis para saber seu tipo..
Existe uma coisa chamada "domínio".
Se você espera que o usuário forneça uma resposta, primeiro você tem que determinar o tipo de resposta (é um caractere? é um inteiro?)
Se você vai realizar uma leitura de um valor em moeda, a opção lógica é ponto flutuante.
Existe outra coisa chamada C99, que permite a declaração de variáveis em qualquer parte do código. Se eu ainda lembro da matéria, é bom ler algo sobre localidade espacial e cache/TLB hit/miss.
Se você naum estiver usando uma linguagem case-sensitive, programe bonitinho ;D..ao invez de :
if (balgumacoisa) set field_changed_value of arquivo_dd field arquivo.nome to snome
por isso:
If (bAlgumaCoisa) Set Field_Changed_Value Of Arquivo_Dd Field Arquivo.Nome To sNome
Geralmente linguagens possuem alguma convenção p/ dar nome a variáveis e métodos. Em Java opta-se por iniciar os métodos com um verbo com letra minúscula e o restante do nome utiliza Camel Case. Em Ruby os programadores preferem tudo minúsculo, separado por underscore. Em Java, escreve-se as constantes com todas as letras maiúsculas, mas em Ruby, se a variável tem a primeira letra maiúscula ela já é uma constante por definição da linguagem.
Se preocupar em usar ou não Camel Case é inútil se os nomes das variáveis e dos métodos não dizem nada sobre eles.
soh q antes de entregar teste bastante, tds os casos possiveis..
Isso é impossível.
A parte teórica de testes determina alguns modos de testar software e o quê testar.
Tem o teste baseado em classes de erros; os que exploram erros do programador (< no lugar de > , == no lugar de != ); baseados no "valor limite" (dada uma restrição testa-se entradas nos extremos dessa restrição); e uns que usam critérios mais complicados (du-caminhos, potenciais du-caminhos). Os mais simples são "todos os ramos" e "todos os nós" ( o programa é representado com um grafo).
Sempre qnd naum souber onde esta o erro, encha o programa de printfs de box, de td q puder..ate saber onde o erro acontece..
Use um debugger.
é essa dos printf's eu uso até pq naum soh muito amigo do debugger xD!
É e outra coisa tbm q achei legal você falar é da convenção da linguagem, isso realmente é legal dar uma lida qnd começar a programar em tal linguagem..
[]s
Pô..
eu queria um conceito para o "return 0;"
para que serve exatamente...
return 0 ow return EXIT_SUCESS, serve para dizer para o sistema operacional q td ocorrew bem;
brigadão ae, cara!
é que eu tô estudando um script aqui.. que no final tem um "return 3;"
dae, ao invés do programa falar o menor valor digitado, ele sempre diz "O menor valor digitado foi: 3"..nao importa se você digitou 2, 1, 0...sacou?
o "return 3;" tem a mesma funcionalidade do "return 0;" por exemplo?
outra coisa...
tem um "char nome[20];" aqui..
mas se eu alterar esse "20" para "0", ele vai funcionar do mesmo jeito...
dae eu pergunto..Para que serve declarar esse "20" entre colchetes?
desde já, agradecido!
Dinarth...
você declarar char[20] significa que você vai pedir espaço para 20 bytes de memória para guardar algum valor.
se você quiser colocar o mesmo valor (uma frase de 19 caracteres) em uma variável char[0] pode funcionar, mas corre o risco de um stack overflow, pois a stack não estava pronta para receber 20 valores...
Se o programa pede pra você digitar um número, e só mostra "3" é pq tem algum erro lá!!!
O return 3 por exemplo, é eficiente para debugar um código.
Se ele retornou 3 para o S.O. você ja sabe onde foi o erro.
ahh soooh..
entao quando me retorna 3 é pq tá rolando erro?
pô..pior que eu já vasculhei, mas nao achei erro algum... =/
vou dar mais uma olhada aqui..
brigadão ae, rapá!!
calma ae calma ae..
esse return q você ta falando é o return da main ow de alguma função?
é na função mermo..
entaum esquece td q eu escrevi para você de retornar para o sistema operacional..
o return faz um simples papel de retornar algo para quem o chamou, exemplo:
int soma(int a, int b){
return a + b;
}
int main(){
int c = soma(3,4);
printf("%d", c);
return 0;
}
o return de uma função faz isso devolve um valor do tipo esperado q você definiw..
outras duvidas poste no forum principal, esse tópico naum é pra esse tipo de perguntas ;D
[]s
Gente....Main é uma função. O fato dela ser obrigatória não a transforma em algo diferente. E o return faz a mesma coisa em qualquer função, independente se quem a chamou foi uma função dentro do programa ou o sistema operacional.
Na real quando falaram que uma linguagem tem seu padrão de variavel, metodos e funções.
Digo que ate mesmo mesmas linguagens tem padrões diferentes.
se você for programar para Windows, você vai ver diversas funções ou classes começando com letra maiscula(se for classe primeira letra maiuscula C seguida da outra maiuscula), CMapStringToPtr, metodo GetStartPosition(), padrão utilizado na MFC (Microsoft Fundation Class).
já para Linux você vai ver altas coisas como shm_open(), pthread_create() as funções são documentadas na especificação POSIX (coisa velha isso), qualquer sistema operacional que segue o esquema do POSIX (geralmente Unix) tem essas funções. Ex: de SO que implementam essas funções, AIX, Solaris, Linux, HP_UX e vários outros Unix.
Logo tomar cuidado com a plataforma que esta programando que a mesma linguagem tem diferentes tipos de padrões.
E isso que muitos tentam documentar as linguagens e deixa-las "portaveis" o máximo possivel.
poxa gente, tem coisa ai q desvio o assunto do tópico =//
será q ninguem gostaria de se expressar no sentido de "como você programa?" "transmita algumas dicas"
[]s
se você for programar para Windows, você vai ver diversas funções ou classes começando com letra maiscula(se for classe primeira letra maiuscula C seguida da outra maiuscula), CMapStringToPtr, metodo GetStartPosition(), padrão utilizado na MFC (Microsoft Fundation Class).
já para Linux você vai ver altas coisas como shm_open(), pthread_create() as funções são documentadas na especificação POSIX (coisa velha isso), qualquer sistema operacional que segue o esquema do POSIX (geralmente Unix) tem essas funções. Ex: de SO que implementam essas funções, AIX, Solaris, Linux, HP_UX e vários outros Unix.
Detalhe: eu não falei que todas as linguagens possuem um único padrão de escrita. Repetindo: Geralmente linguagens possuem alguma convenção p/ dar nome a variáveis e métodos.. Na maioria dos casos a Microsoft presta mais um desfavor aos desenvolvedores (ex: p/ quê vários tipos de ponteiros com nomes impossíveis?) do que o resto das empresas. Tirando a Borland... Mais duas dicas de programação:1- Preste atenção enquanto programa.
2- Não compilou ou deu erro? Leia o programa e as mensagens do compilador e tente consertar antes de abrir um tópico pedindo implícita e, ao mesmo tempo, descaradamente que os outros compilem o código de 600 linhas bugado por você.
Essas duas coisas são básicas. Sinceramente, se você não está com vontade de fazer isso "pq é difícil e trabalhoso", largue a programação e vá estudar outra coisa.
Recebi da minha professora a dica "do estilo hungaro" acho bem proveitoso especialmente em codigos estensos.. mas seguindo o padrao do topico.. como eu programo.. ainda n faço nada mt avançado.. mas o q eu mais preso eh a organizaçao.. e acho mt importante em codigos extensos que futuramente vou usar.
#include<stdio.h>
#include<stdlib.h>
main()
//em cada funçao procuro manter as chaves juntas ao canto
{
//faço declaraçoes de variaveis coladas ao lado esquerdo
int a,b,c;
float d,e,f;acredito eu q essa forma de estruturar o conteudo seja o mais organizado, pois as funcoes e as variaveis ficam no canto esquerdo destacadas, e o restante do codigo com a tabulaçao se diferencia.. e a leitura do codigo fika muito mais agradavel.... observe a posiçao das chaves.. deixam o conteudo bem definido ..
se tiverem um outro geito proprio postem aew.. opinioes tb sao bem vindas
obrigado
att Lucas Konrath
Outra, sempre que mexer com ponteiros, teste para o caso null ( if ( p == null ) ) é sempre muito delicado mexer com ponteiros. Lidar com um ponteiro null pode ser um tiro no pé com espingarda.
Abraços.
é verdade, a indentação do código é bastante interessante, o código separado por funções e classes usando os conceitos de POO é obvio de se entender, a classe pode ser como for, sempre será muito fácil de entender e de poder contralar seus membros separadamente.
as definição de classe quem conhece C é igual ao Struct.
#include <string>
class myclass
{
private:
int variavel; //Variavel normal do tipo inteiro.
std::string nome;
public:
~myclass();//Construtor é sempre bom, pois a classe quando usado de forma correta com o uso de construtor e destrutores, ajudam a funcionalidade e desempenho do programa.
myclasse();//Destrutor
char getname();//Função do tipo char.
void setname();//Função do tipo void-- Sem retorno.
};
desculpem pelo post longo, quem se interessou no assunto muito recomendado por todos os programadores, desculpe não fazer uma implementação direta pois a falta de tempo as vezes mim ataca.
OBS:a classe facilita no desenvolvimento do código e do programa, o uso da biblioteca string é para padrões do C++, facilitará e muito a vida de qualquer um..
estou só postando idéias a partir delas que membros pelo menos como eu partiremos em busca de mais conhecimento, proximo post será algo com Winsock.
Atenciosamente Marquinho
Se você quer começar a programar não ache que o caminho começa no C++, ASM, para ser um bom programador siga esta lista e se destaque:
• HTML
• XHTML (Há uma pequena diferença entre HTML e XHTML. É melhor que você pule o HTML e já vá direto ao XHTML, assim é mais fácil usá-lo mais tarde. E não, "programação de VERDADE" NÃO se parece com XHTML)
-
• CSS
-
• Javascript
-
• PHP (Esta é sua primeira linguagem de programação "de verdade" - gaste MUITO tempo aprendendo todos seus conceitos! http://www.php.net/)
-
• MySQL (E aprenda como "ligar" MySQL com php, e faça isso DIREITO)
• HTACCESS
-
• Actionscript 3 (Pode ser pulada, mas te ajudará com suas técnicas de programação)
-
• AutoIt (É simples e inútil, mas você aprenderá mais sobre a mecânica do Sistema Operacional ao invés de focar na programação real. ALTAMENTE recomendado).
-
• VB.NET [Pode ser pulada, mas te dará um pouco mais de prática, dando um passo de linguagem de script (como AutoIt) para programação real]
-
• C#.NET (NÃO PULE - esta vai te ajudar IMENSAMENTE nesta longa caminhada. Não use para criar programas usuais ou hacks , mas sim para aprender bastante sobre programação). É logico que depois que terminar a jornada poderá fazer oque quiser.
-
• C++*
-
• Assembly**
-
(*) • C++ é uma linguagem de programação muito difícil. Você irá usar o C++ -todo o tempo-, seja com programas ou com hacks, modificações, etc. Uma vez que você aprende C++, você pode aprender qualquer outra linguagem muito mais fácil e sem muito trabalho. NÃO COMECE DIRETO COM C++ se você quiser se tornar um bom programador, especialmente se você é iniciante.
• Se você usou Windows toda sua vida, programe no Windows. Se você usou MAC toda sua vida, programe no Linux. Se você usou Linux toda sua vida, programe no Linux. É tão simples.
-
(**) • Assembly existe para vários tipos de processadores - Eu recomendo aprender MASM32 (um compilador de ASM) e desenvolva programas básicos antes de pensar em programar, hackear ou modificar algum jogo ( se for o seu objetivo{A maioria é}.
Quando você for bom você DEFINITIVAMENTE vai usar o ASM -TODO O TEMPO - para tudo. Bote na cabeça é possivel criar tudo com ela, até sites, ou melhor todas as linguagens é possível criar tudo, mas não terá as funções que outra linguagem tem, ou será limitada.[/font]
Por fim: Boa sorte nesta longa jornada porque o caminho é grande, sofrido mas no final você vai poder dizer: "O sofrimento valeu apena, hoje sou programador, de verdade"
Tenha em mente que você vai precisar muitas muitas muitas ferramentas ao longo do caminho.
Quando aprender XHTML / CSS / Javascript, você não irá precisar de nada, apenas, o bloco de notas, uma pasta vazia para as suas páginas, e um navegador.
Para o PHP, você precisará do bloco de notas, de um navegador e um pacote de programa chamado XAMPP (ou WAMP) (http://www.apachefriends.org/en/xampp.html). Ele vai processar o PHP, que como é a linguagem de codificação do servidor, você não poderá simplesmente abri-lo em um navegador para que funcione. Xampp é bastante simples de usar.
O MySQL é um pouco mais difícil, você vai precisar baixar um servidor MySQL (grátis em http://dev.mysql.com/downloads/mysql/ - encontre a versão que você precisa e que se encaixa nas informações do seu computador). Ele é um pouco mais difícil de configurar, mas é simples de usar. E sim, o Xampp tem um, mas é um pé no saco de configurar e usar. Eu também recomendo usar um programa chamado "netcat", ele estabelece sua base de dados em tabelas qu são fáceis de configurar e outros agrados. Incrivelmente útil.
O HTACCESS é uma dor de aprender. Eu recomento também ficar algum tempo aprendendo os códigos em PHP regex (que são os comandos preg_ ----). Eles são muito úteis. Criar htaccess é tão fácil quanto usar bloco de notas e renomeá-lo.
ActionScript 3 é uma linguagem difícil, que é por isso que eu digo que ele pode ser ignorado. Como eu tenho o Flash CS5, eu nunca precisei de um compilador ActionScript diferente Adobe Flash. É divertido para mexer, mas não é útil. Se quiser ler um pouco sobre: http://www.senocular.com/flash/tutorials/as3withmxmlc/
AutoIt é incrivelmente útil, e em vez de fazer você aprender programar de verdade, ele permite que você faça coisas legais por apenas saber os seus mínimos conceitos e conceitos básicos de programação. É lento, mas é muito mais muito divertido à ser usado. Como funções (soquete), criação de funções GUI, caminho / arquivo / Manipulação de .INI Gravação / escrita / leitura. Tudo isso vai ser muito útil mais tarde. AutoIt é gratuito e é bastante simples de aprender e usar - http://www.autoitscript.com/ (OBS.: Baixe a ultima versão.).
VB.NET = Eu odeio com uma paixão. Mas, novamente, este não é para aprender ao ponto de virar o mestre, tudo bem se quiser se empenhar em estutar mas lembre-se esta linguagem não é uma linguagem de programação de verdade. Se você se sentir preparado, você pode pular VB.NET, mas você não pode ficar com pena de meu suas mãos para pular C#.NET; Não importa o quão bom você pensa que é, se você está seguindo este guia, não pule C#. Eu vou entrar mais depois neste segmento. Para começar em VB, VB.NET simplesmente baixe a plataforma - há uma versão grátis. http://www.microsoft.com/Express/VB/
Agora, digo o'que você absolutamente não pode pular, que é o C#. O C# é o último passo antes de aprender C++. O C# usa o mesmo framework de C#.NET. e lembre-se o C# é mais perto que você chegará do C++. O C#.NET ensina conceitos de programação convencionais. Eu recomendo que você anote bem tudo enquanto você vai aprendendo / O'que você deverá aprender antes de estudar C++:
[*]Entry points
[*]Scopes (public/protected/private)
[*]CLASSES (Passe muito tempo aprendendo classes, é muito importante você saber.)
[*]Streams
[*]Sockets - Conhecimento sobre sockets em C# é crucial, e o conhecimento sobre eles em C# é praticamente o mesmo da API do Windows. Aprenda.
[*]Return types - Se você sabe como lidar com tipos, type casting, tipos de retorno, etc, então você pode aplicar praticamente qualquer função em seu programa.
[*]Enums
[*]Structs
[*]Loops/Conditionals - (For/While/Foreach/Switch/If/Ternary Operators (MUITO IMPORTANTE))
[*]Functions/Methods
[*]Fazer DLL's e saber a diferença em uma DDL de uma EXE.
[*]Console vs. Window application
[*]DirectX 9 (Sim, para C#. Mais uma vez, estude e aprenda os conceitos do DirectX.) [Necessário aprender se você planeja criar hack's para jogos - praticamente todos os jogos é feito em DirectX.]
[*]Threads (MUITO IMPORTANTE)
Se você conseguir dominar tudo isso, então você é um programador potencial. Aprenda conectar tudo isso e saiba oque é necessário para montar os programas, então será um programador de verdade. C#.NET é fácil de programar, você pode baixar sua IDE em: http://www.microsoft.com/express/vcsharp/. Se você souber tudo que foi listado acima, então você estará apto à estudar C++.
É muito dificil desenvolver em C++, porque há muitas funções, etc, e muitas opções em seu compilador.
Se você estiver no Windows, obtenha o Visual Studio ou CYGWIN (VisualStudio não é grátis, e Cygwin é difícil de configurar... - Eu passei muito tempo com esta linguagem, portanto aproveite seu tempo à estudando..
Se você estiver em Linux, comece com a IDE: GCC.
Se você utiliza o MAC, mudar para o Linux ou Windows Se você quer ser um programador para MAC, obtenha um aplicativo chamado Xcode - Eu só usei uma ou duas vezes, mas ele começa com partes feitas. http://developer.apple.com/tools/xcode/. (OBS.: Se for programar para Windows, ultilize windows, se programar para linux, o utilize, se for para MAC, o utilize, mas por favor não utilize este ultimo, é a pior coisa que fará.
Então, aqui está uma lista do que você deve olhar-se e estudar antes ou durante a ficar de hardcore em C + +:
A lista em inglês pois você estudará pelos mesmos nomes sem tradução
[*]Memory types
[*]Garbage collection
[*]Memory addresses
[*]Running memory
[*]Address space
[*]Offsets
[*]DLL's (Yes, Releia e Reaprenda para aumentar seu conhecimento)
[*]Learn what a DLL injector does
[*]Compilers/Compilation
[*]Debug
[*]Breakpoints
[*]Exceptions
[*]Exception handlers
[*]Method proxies
[*]Hooking
[*]Windows API and includes
[*]Libraries
[*]External resources
[*]POINTERS - VERY USEFUL
[*]Detours
[*]The Heap and The Stack
Então, por último você chegará na linguagem mais importante de sua vida:O ASM. Se quiser ser bom você deve aprender ASM. E sim esta é uma programação REAL. MASM32, então NASM (veja como criar o seu próprio sistema operacional - que realmente ajuda muito, ou seja agora você sabe que um sistema pode ser feito com ASM e é claro utilizara outras linguagens [[http://www.osdever.net/tutorials/hello_btldr.php]](http://www.osdever.net/tutorials/hello_btldr.php%5D)), em seguida, aprender como criar um programa básico e uma janela GUI básica em MASM32, em seguida aprenda como fazer engenharia reversa em um programa (Utilize IDA - é a melhor e descubra exatamente o que acontece por traz de todos os programas.
Amigo, veja só.
Você começou o tópico com "ser um bom programador" e, em seguida, misturou tanta coisa que, sinceramente, me faz duvidar se você compreende o que significa "ser um bom programador".
Não sei onde você encontrou essa lista, mas vou lhe dar uma dica: Remova essa fonte o mais rápido possível da sua lista de referências.
;)
Algumas considerações:
XHTML/HTML,a rigor, não podem ser incluídas em dicas de linguagens de programação, já que são linguagens de marcação. Atualmente o hype é o HTML5, já que o comitê que cuidava do XHTML 2 foi dissolvido em 2009 (juntaram tudo no comitê do HTML5).
CSS é uma linguagem de estilo. Acho que a única coisa próxima de programação que dá p/ fazer com isso é se você usar LessCSS ou Sass, que suportam variáveis, operações com os elementos (ex: adição, subtração, concatenação) e até Javascript inline.
Levando em conta que os programadores podem ser "classificados" de acordo com aquilo que mexem (e normalmente o são), a parte de "mecânica do sistema operacional" e "programação real" deveria ser explicada melhor. Do meu ponto de vista (bacharel em CS), uma ferramenta de automação via linguagem de script não expõe nenhuma mecânica do sistema operacional p/ o usuário. Aqui estou falando de coisas como escalonamento de processos, cache, paginação e outras coisas que realmente formam o sistema operacional.
Não se pode dizer que se você aprendeu uma linguagem X (no caso, C++) você consegue aprender qualquer outra linguagem facilmente. Existem as diferenças entre paradigma de programação. Um exemplo disso são as implementações do Quicksort em C e em Haskell, que você encontra na página da linguagem. Programadores enfrentam dificuldades até mesmo com linguagens que suportam o mesmo paradigma. Já vi rubistas e pythonistas se descabelarem ao ter que voltar p/ C# ou Java. E o contrário também é válido: numa conversa com um dos meus professores ele mesmo confessou que ensinar Rails depois de anos pensando em C++ gerava alguns sustos.
Sobre os ambientes: eu discordo. No Windows o problema geralmente é configurar tudo. Principalmente dentro de uma IDE, que, embora tenha recursos como code completion, tira o contato com o processo de compilação, no caso de linguagens como C e C++. Na pior das hipóteses (e parece que isso acontece com uma certa frequência), a pessoa se torna dependente de ferramenta e não conhece o que roda por baixo dos panos, que é o que faz o trabalho real. É por isso que eu recomendo a quem está começando que baixe um liveCD de uma distribuição Linux (Ubuntu e OpenSuse, normalmente).
Ninguém usa tantas linguagens sempre. Eu mesma comecei a programar em C em 2002 antes de entrar p/ universidade e só usei C lá. Aqui fora tive que aprender Perl na marra sem internet, PHP enquanto tinha que consertar sites e hoje uso Python com Object Pascal.
O único netcat que conheço é um programa GNU que lê e escreve dados através da rede. E desse que você está falando? Se for, é preciso tomar cuidado com as falhas de CRC do TCP/IP ao se copiar as tabelas.
Htaccess faz parte do servidor Apache (se alguém lendo aí não souber). Eu perdi muito tempo da minha vida tentando entender esse negócio. Larguei mão e fui p/ NGinx, Lighttpd e Cherokee.
ActionScript é coisa da Adobe, usada dentro do Flash. A Apple começou a guerrinha contra o Flash e parece que a Microsoft, no IE10, só vai permitir a execução de Flash se o site for "pré-aprovado" pela empresa. Tiro no pé? No Linux é difícil desenvolver em ActionScript. A única coisa livre parecida com Flash, o Moonlight, está morto porque o Silverlight não foi adotado como queriam.
Por que VB.NET não seria uma linguagem de programação de verdade? Já que você mesmo disse que a odeia, então é quase certo que sua preferência interfere no julgamento.
Seguindo a evolução das linguagens, tanto Java como C# estão próximas de C++. O "problema" é que, com a adoção do Ruby, várias coisas foram encaixadas no C#, e no Java por tabela. Provavelmente, daqui a umas 3 major versions, estaremos mais próximos de Ruby também. http://www.levenez.com/lang/lang.pdf
É muito dificil desenvolver em C++, porque há muitas funções, etc, e muitas opções em seu compilador.
Seguindo o mesmo raciocínio, é muito difícil também desenvolver em C, em Java, em C#, em Python, em Ruby, em Perl, em PHP... E a lista vai indo... É por isso que existem os manuais e padrões da linguagem. Como no Linux é possível baixar a documentação das bibliotecas de desenvolvimento das linguagens, é mais fácil você criar a cultura de andar com as próprias pernas. E também é um motivo pelo qual eu recomendo dar um chute no Windows quando se está aprendendo.
Discordo totalmente sobre a necessidade de saber tudo da lista antes de querer meter as mãozinhas em C++. No final das contas, não é a quantidade de linguagens que torna alguém um programador bom. E não existe tempo hábil p/ ser mestre em todas elas. A grosso modo, um programador resolve problemas e a pior coisa que os processos de recrutamento e até mesmo o dia-a-dia do serviço fazem é querer encaixotar/serializar uma ocupação que é essencialmente criativa. O que é necessário p/ um programador é querer pensar em um problema de formas diferentes.
GCC não é IDE, é um compilador.
A jornada não termina. Nunca.
>
Não sei onde você encontrou essa lista, mas vou lhe dar uma dica: Remova essa fonte o mais rápido possível da sua lista de referências.
;)
Bom, não sei qual ou como você pensa que tem como aprender direto C++(Sem ressentimentos), mas como você perguntou, eu digo em forum's estrangeiros utilizamos esta manual à mostrar ao iniciante que programar não é uma tarefa curta que você pega uma apostila de uma linguagem avançada e já aprende tudo.
Se for assim como um iniciante irá saber um dia que é possível criar um site em ASM, ou melhor, qualquer linguagem é possível criar o'que outras linguagens fazem. O problema é o tempo que você leva à fazer isso em c++, asm, etc comparado ao tempo levado por html, php, é bem maior.
O'que mostro aqui, não é uma lista obrigatória falando que você tem que fazer essa linguagem antes de aprender outras mais avançadas, mas sim, dicas, que se você aprender linguagens básicas e ir progredindo, você irá aprender recursos que talvez quando estiver programando em haskell, brainfuck, etc você descubra que pode fazer este recurso em uma linguagem que levará menos tempo e consequentemente menos custos.
Até logo. E desculpem qualquer coisa
Sobre aprender direto C++: não vejo porque seja impossível. Alguns conceitos, como iterables e iterators, closures (Ruby, Groovy -- e agora, Java) são estranhos à primeira vista, independente da linguagem. O que vai dificultar a implementação de um programa é como o recurso foi adicionado na linguagem. Em Python, por exemplo, não se tem o operador ternário como em C,Java, C++ e outras linguagens. O que se faz é emular o comportamento usando os operadores condicionais e até mesmo indexação em listas. Na verdade, é até melhor se você não souber que existe um negócio chamado operador ternário: é uma coisa a menos que você tenta forçar p/ dentro da linguagem.
De resto, é tudo questão de achar material bom (a frase "nada de 'C Completo e Total'" está implícita). Em épocas onde o ctrl+c / ctrl+v e a pressa de fazer a coisa p/ pegar o próximo item da lista ("é tudo igual mesmo....é tudo CRUD") dominam, você acaba num salseiro enorme.
Eu gostaria que os desafios de C/C++ voltassem. Não porque é legal ter o nome postado como vencedor p/ escolher o próximo tema, mas porque você é forçado a pensar melhor que os outros participantes. A linguagem é só um meio de expressar as idéias.
Não veja esses posts como desafios ou ofensas. Nem como lição de moral, igual a um usuário p/ quem eu pedi p/ colar as mensagens do compilador. Continue participando.
Muito bacana o topico, a meu parecer surgirao muitas dicas por aqui.
Valeu pelas dicas do padrao hungaro, realmente vai ajudar bastante. =D