De que maneiras específicas o Delphi influenciou a linguagem C #

8

Estou procurando especificamente influências da linguagem (em oposição à estrutura). À primeira vista, o C # parece ser uma evolução do C / C ++ ou Java. Mas sabemos que o C # tem o mesmo designer que o Delphi, e ele até reconheceu algumas semelhanças e disse que "boas idéias não desaparecem". O único exemplo que vejo de algo em C # que não está em Java ou C / C ++ são as propriedades. É isso? Existem outros?

Jim McKeeth
fonte
É uma pena que alguns deles realmente tenham feito isso. Olhe quanto tempo demorou a gente .NET para reimplementar as capacidades dinâmicas que Delphi teve disponível no varianttipo desde praticamente para sempre ...
Mason Wheeler
Felizmente eles não
aderiram
2
@ Newtopian: Então você prefere pontuação do que palavras legíveis? Mais um programador do tipo APL?
21711 Jim McKeeth
O Turbo Pascal (ancestral do Delphi) foi escrito por Anders Hejlsberg , arquiteto-chefe da linguagem C # da Microsoft. Ligue os pontos.
Robert Harvey
5
APERSANDJim COLON yesCOMMA Eu prefiro muito mais a pontuação sobre sua pronounciationEXCLAMATIONMARK Inglês, porque eu acho que isso faz a coisa toda muito mais readablePOINT COLON DASH SEMICOLON
Newtopian

Respostas:

4

Não tanto do que é visível para o programador, mas nos bastidores, um pouco, mas muitos deles estavam no IDE e no design de controle de formulários do Windows, em vez da própria linguagem, eu uso o Delphi 7 há cerca de 10 anos e C # por cerca de 5, por isso compreendi alguns:

1) A propriedade anchors é idêntica à Delphi

2) A posição padrão do formulário

3) A hierarquia de objetos para os controles

4) O criador de formulários em geral se sente muito parecido - não posso apontar exatamente isso.

Algumas coisas na própria linguagem eu notei:

1) Certos tipos de dados, também conhecidos como Moeda / Decimal

Algumas coisas na linguagem que são muito diferentes:

1) Herança de construtor (delphi usado para herdar todos os construtores para basear objetos que eles não precisavam ser definidos novamente em classes descendentes)

2) O Delphi tinha a capacidade de rebaixar a visibilidade de um método ou propriedade nas classes descendentes, mas mantém o polimorfismo intacto, o C # não permite isso (sinto muita falta disso)

Provavelmente perdi muitas coisas, adicione-as se pensar nelas.

Aaron Murgatroyd
fonte
Desejo que os designers de linguagem reconheçam como distinta a interface do mundo externo herdada da classe base, a interface do mundo externo da classe derivada e a interface que a classe base apresenta à classe derivada. Se várias classes terão conjuntos de habilidades sobrepostos, é muito mais fácil agrupar uma classe ou interface base comum que expõe todas essas habilidades junto com o membro para dizer quais são realmente utilizáveis, do que agrupar uma variedade de classes que expõem combinações diferentes dessas habilidades; não há nenhuma razão, no entanto, por que as classes derivadas devam ter que ... #
686
... expor - como membros de seu próprio tipo (em oposição ao tipo base) - membros que não serão realmente utilizáveis ​​com seu próprio tipo. Se um contrato de classe base diz que qualquer classe derivada cuja CanWoozlepropriedade retorna true deve fornecer uma Woozle()implementação utilizável , mas uma classe derivada específica sempre retorna false para CanWoozlee tem uma Woozleimplementação legitimamente inutilizável , não há razão para a classe derivada ter que expor seu Woozlemembro .
Supercat
2

Anders esteve na Borland até o Delphi 3 - ele foi o arquiteto original do Delphi e também do Turbo Pascal. Se você carregar o Delphi 1, abra a caixa about e digite AND e você terá uma foto de Anders que pisca para você.

Quando ele deixou a Borland para a MS, ele fez o J ++ inicialmente, o que "irritou" a Sun um pouco. Então ele criou o C #. Os pontos que você deve juntar vão de Borland Object Pascal -> Java / J ++ -> C #

C # é a tentativa da Microsoft de criar um Java melhor. Como um antigo codificador Delphi, eu aceitaria que eles provavelmente foram bem-sucedidos.

mcottle
fonte
1
Eu discordo que o C # é uma tentativa de "criar um Java melhor". Embora existam especialistas em Java na equipe de design do C #, raramente fazemos comparações explícitas com o Java ao projetar recursos de linguagem.
precisa