ESTAS 3 PERGUNTAS, NEM OS GURUS RESPONDEM
Tenho estas dúvidas a mais de 20 anos!!!!!
São perguntas de principiante.Mas,para as quais
não obtive resposta desde a época da faculdade.Mesmo perguntando
para Professores e Gurus.Como não perco a esperança,
decidi postar novamente;
1.) Algumas Linguagens de Programação,tem como caracterÃstica,
diferenciar na sintaxe da Linguagem Caixa alta e Baixa (Maiúscula e Minúscula).
Isto me parece algo sem o menor sentido. Nenhum desenvolvedor, que preze
por boas práticas irá criar duas variáveis com o mesmo Nome,uma em Caixa
Alta e outra em Caixa Baixa.Pois,isto gera confusão no código,Dificuldade de manutenção,
etc...
Então,porque esta caracterÃstica de linguagens, como C# ,Java,Etcc.. persiste até hoje?????
2.) Minha outra dúvida,se refere ao famoso ; (Ponto e vÃrgula) do C# e Java. Afinal,porque motivo a sntaxe destas
linguagens exige que este sÃmbolo seja colocado ao fim de cada comando na linha???????
No .net, por exemplo, não colocamos nada, e a IDE entende perfeitamente que se trata de uma quebra de linha.
3. Na mesma linha de raciocÃnio, para que servem aquelas famigeradas { } no Java e C# ????????
No .NET, por exemplo, você não precisa de chave nenhuma para separar os blocos lógicos.E o código
fica perfeitamente organizado, sem precisar delas.Então ,porque estas linguagens mantém estas coisas
em pleno século 21?????????
Obs: Peço aos colegas,que tiverem a boa vontade de responder que [Ô]Não[Ô] me digam coisas do tipo:
[Ô]é assim mesmo,meu filho[Ô] ou [Ô]é uma caracterÃstica da Linguagem,desde o inÃcio,e decidiram manter e
pronto[Ô].....
O que eu peço e procuro é uma resposta [Ô]Técnica[Ô], que justifique a manutenção destas caracterÃsticas inúteis
na sintaxe destas linguagens ?
Embora estas dúvidas, sejam de principiante.Repare que elas,tem um enorme impacto na produtividade no desenvolvimento
de projetos de engenharia de software. Você tem idéia,da quantidade de chaves ({}), pontos e VÃrgula,etc... um programa grande
de milhares de linhas tem que ter?????
Sem falar no tempo que você perde,para debugar Bug[ô]s , e descobri que o que estava errado era a falta de uma chave,um Ponto e vÃrgula
no fim da linha,etc....
nome = new Nome();
se for uma linguagem insensitive você teria que por algum prefixo pra diferenciar o que na sensitive já não precisa.
há quem diga que você poderia colocar assim:
joao = new Nome();
mas fica ilógico e incompreensivel por terceiros.
private string login;
public string Login
{
get
{
return login;
}
set
{
login = value;
}
}
2- O [Ô];[Ô] é herança das linguagens que se baseiam no C. Como o foco dessas linguagens é justamente pegar essa gama de programadores, eles colocam ela com o máximo de regras parecidas. Pode perceber que um programador VB tem extrema dificuldade de se adaptar a uma linguagem com quebra de linha usando [Ô];[Ô] , já ao contrario é mais simples de se adaptar. Além de claro ser menos confuso, ao esquecer a finalização da linha a propria IDE te avisa. Então o objetivo principal dele é dizer ao IDE quando é que uma declaração terminou.
3- QUase mesmo caso que disse acima, a diferença é que no vb o que ta organizado é um problema. Veja bem, no c# você consegue diferenciar os blocos de códigos porque você sabe onde ta começando a { e fechando a } ( percebeu que [Ô]e fechando a[Ô] está entre chaves?) vc sabe que acabou ali.
e no vb?
você só sabe no vb quando a instrução if acaba quando tem o end if porém se você quiser fazer um else if você terá que olhar mais de uma vez ( dependendo da quantidade de if[ô]s) pra saber onde exatamente coloca-lo, coisa que no c# você ja sabe só de olhar pro final da [Ô]{}[Ô].
é mais ou menos por ai, não é algo que está lá porque é antigo, é necessário, ainda mais quando está programando em empresas grandes com muitas pessoas mexendo no código. Acabou que ficou assim. Mas também gosto do vb sem ter essas coisas, porém por ja ter vindo da época do C eu acho ela mais confusa em termos de blocos e terminações de statments.
1ª Dúvida:
Declaração de propriedades: Property Nome as String
Se você criar uma propriedade assim, a plataforma criará uma variável privada da seguinte forma: private _nome as string. Repare que o sinal de [Ô]_[Ô] na frente da variável só foi para diferenciar, pois senão seriam as mesmas, o que não faria sentido. Nas linguagens Case Sensitive só seria necessário declarar em minusculo mesmo para diferenciar.
Experimente criar uma variável assim no VB: dim While as String. Depois, faça o mesmo no C# que você vai perceber o motivo do Case Sensitive.
2ª Dúvida:
O VB também possui uma delimitador de código, que no caso, é o [Ô]:[Ô].
Um exemplo: Dim a As String: Dim b As Integer
O que acontece é que a plataforma inseri esse delimitador pra você e por isso você acaba achando que não tem, mas isso é uma questão da plataforma, não dá linguagem, pois praticamente todas tem seus delimitadores.
3ª Dúvida: As chaves servem para fechar um bloco de codigo, como todas as linguagens fazem, e simplificam mais o código. No caso do VB usa-se End Sub, End Function, End If, End Case, etc., para fazer as mesmas coisas, o que deixa o código mais sujo.
Agora vamos fazer uma breve comparação com o VB.Net
quando criamos um método obrigatoriamente temos que terminar com End Sub. é a mesma coisa das chaves se você abre tem que fechar. é fácil!. Eu particularmente prefiro esse tipo de linguagem do que o VB. Que por sinal a única vantagem que ele dá pra programadores iniciantes é a maior quantidade de tutoriais que se encontra na internet. Mas isso tá acabando! Temos os Kerplunk que dá umas aulas bacanas em C#, tem vários tutorias na internet em inglês sobre o assunto também, e por aà vai...
Preferencias a parte o ideal mesmo é procurar o conhecimento sobre todas as linguagens! rsrsrs. Tá certo que para isso precisamos nos tornar imortais! rsrsrs. Mas o que define um bom profissional hoje em dia é vontade de aprender e dedicação, o certificado só serve pra alimentar currÃculum! Mas é bom ter ele também.
Citação:1.) Algumas Linguagens de Programação,tem como caracterÃstica,
diferenciar na sintaxe da Linguagem Caixa alta e Baixa (Maiúscula e Minúscula).
Isto me parece algo sem o menor sentido. Nenhum desenvolvedor, que preze
por boas práticas irá criar duas variáveis com o mesmo Nome,uma em Caixa
Alta e outra em Caixa Baixa.Pois,isto gera confusão no código,Dificuldade de manutenção,
etc...
Então,porque esta caracterÃstica de linguagens, como C# ,Java,Etcc.. persiste até hoje?????
Você imagina como funciona um processador ? Sabe o que é ligar e desligar ? sabe como funciona um compilar ? sabe o que é Binário, Hexa, Octa ?
Se não souber, sugiro que leia bastante sobre o assunto.
Citação:2.) Minha outra dúvida,se refere ao famoso ; (Ponto e vÃrgula) do C# e Java. Afinal,porque motivo a sintaxe destas
linguagens exige que este sÃmbolo seja colocado ao fim de cada comando na linha???????
No .net, por exemplo, não colocamos nada, e a IDE entende perfeitamente que se trata de uma quebra de linha.
Citação:3. Na mesma linha de raciocÃnio, para que servem aquelas famigeradas { } no Java e C# ????????
No .NET, por exemplo, você não precisa de chave nenhuma para separar os blocos lógicos.E o código
fica perfeitamente organizado, sem precisar delas.Então ,porque estas linguagens mantém estas coisas
em pleno século 21?????????
Cada compilador lê cada linha de comando da sua forma, uns vão usar o binário que represente a quebra de linha, e outro o ponto e virgula.
No Caso do C# uma linha [Ô]instrução[Ô] só é finalizada quando tem o ponto e virgula, cada instrução pode ser várias linhas quebradas.
Tenta fazer um processador de texto que contenha formatação. que talvez clareie mais suas dúvidas em relação a compilação de código.
como o CLEVERTON e o JABA explicaram
Ninca tive muita curisidade se saber pq são diferentes.
2 - O ponto e vÃrgula é o que delimita o final de uma instrução. Para programadores que só conhecem a semântica VB, não faz o menor sentido, mas na verdade ele é essencial para uma boa legibilidade de código. Veja o código abaixo:
var query = from analysis in runAnalysis.PassAnalyses.Cast<PassAnalysis>()
let value = analysis.GetValue(PeakStatistics.PeakStatisticsProperty)
from statistic in value.Statistics
where statistic.Name == statisticType
select new ListViewItem { Content = statistic };
IList<ListViewItem> data = query.ToList();
Essa é a sintaxe em C#, agora veja o equivalente em VB.NET
Dim query = From analysis In runAnalysis.PassAnalyses.Cast(Of PassAnalysis)()Let value = analysis.GetValue(PeakStatistics.PeakStatisticsProperty)From statistic In value.Statistics Where statistic.Name = statisticTypeNew ListViewItem() With { _
Key .Content = statistic _
}
Dim data As IList(Of ListViewItem) = query.ToList()
Qual das duas você acha que está mais fácil de ser lida? Esse é um entre muitos casos em que ter o ponto e vÃrgula faz com que o código fique mais [Ô]limpo[Ô].
3 - Você está falando de blocos de códigos. Todo o comando que sugere escopo de código, pode fazer uso dele. Blocos try, if, using, checked, construtores inline e ainda são os containers para classes e namespaces. Sempre que se vê código dentro deles, sabe-se que o código contém delegação de escopo.
O caso é que, julgando pelas suas perguntas, a plataforma .NET ainda não está clara na sua cabeça. Tanto C# quanto VB.NET são ambas linguagens aceitas pelo Visual Studio, além delas existem mais de 70 outras possÃveis de serem usadas. Todas elas são somente o elo entre o programador e o CLS(Common Language Specification). Acredite ou não, C#, VB.NET e qualquer outra linguagem que você escreve código, é só a camada mais superficial de um programa. Elas são traduzidas de CLS para CLI(Common Language Infrastructure), que é o que o .NET framework [Ô]entende[Ô]. Depois disso, esse mesmo código CLI será interpretado e agregado pelo framework que o transformará em CLR(Common Language Runtime) que vai ser lido e interpretado pelo JIT(Just In-Time Debugger) e enfim rodar. Tecnicamente, você poderia escrever código em CLS sem o menor prolema. Concluindo, você está preso no paradigma de linguagem, pensando que faz diferença de uma linguagem para outra, quando na verdade qualquer programador de nÃvel mediano consegue perfeitamente programar tanto em VB.NET quanto C# de forma perfeitamente natural e também consegue interpretar código escrito em outras linguagens e criar o código compatÃvel em sua linguagem .NET preferida sem muito esforço. Se isso para você é algo impensável, então você não está nem em nÃvel mediano como programador. Desculpe, mas é a pura verdade.
Esse seu conceito de [Ô]programas grandes[Ô] com milhares de linhas, vou ser duramente franco com você, mas em software houses sérias, vão direto pro lixo e devem ser re-escritos. Qualquer módulo que contenha mais de 10 linhas, deve ser dividido em outro módulo. Ou seja, se sua classe tem dezenas de métodos, propriedades, campos e eventos, você deve dividir esse código o máximo que puder, em quantos arquivos forem necessários. Programas em que você rola e rola código, são aquém de profissionais. Você pode duvidar, mas quando faço sistemas, uma só classe pode estar contida em mais de 20 arquivs cs(ou vb) diferentes, incluindo forms. é isso mesmo, se você tem um form com mais de 10 linhas de código, você deveria refatorar. Além disso, entra aqui o uso de tecnologia adequada. Se você faz acesso à dados e não quer muito código, então use Entity Framework. Com ele, toda essa parte de CRUD é feita com não mais que 10 ou 20 linhas de código. Se para popular um grid, você tem mais de uma linha de código, você tem um código com nÃvel abaixo do regular.
Não é atoa que você é Oráculo!