Anders Hejlsberg concebe linguagens há mais de quatro décadas, mas a sua influência vai muito além da sintaxe. De Turbo Pascal a TypeScript, trabalhou na relação entre linguagem, compilador, editor, bibliotecas e runtime: a experiência de programação depende de todo este conjunto.
Turbo Pascal tinha de funcionar nos microcomputadores dos anos 1980 e compilar muito depressa. Delphi visava o desenvolvimento visual para Windows. C# acompanhou a plataforma .NET. TypeScript procurou levar análise estática ao JavaScript sem quebrar o seu enorme ecossistema.
Dos microcomputadores ao Turbo Pascal
Nascido em Copenhaga em 1960, Hejlsberg estudou engenharia na Universidade Técnica da Dinamarca. Desenvolveu Compass Pascal, mais tarde PolyPascal. A Borland adquiriu os direitos e integrou o compilador no Turbo Pascal.
Lançado em 1983, Turbo Pascal reunia editor, compilador e execução num programa acessível. A compilação quase imediata encurtava o ciclo entre ideia, teste e correção. Hejlsberg escreveu o compilador original; as equipas da Borland transformaram-no numa plataforma completa.
Delphi: linguagem, componentes e interface visual
Em 1995, a Borland lançou Delphi, com Hejlsberg como arquiteto principal. Object Pascal, desenho visual de formulários, biblioteca de componentes e compilação nativa estavam integrados no mesmo ambiente. Os controlos visuais correspondiam a objetos programáveis, aproximando a interface gráfica do modelo da linguagem.
Microsoft e o contexto .NET
Hejlsberg entrou na Microsoft em 1996 e trabalhou inicialmente no Visual J++ e nas Windows Foundation Classes. A Microsoft preparava o Common Language Runtime, uma plataforma multilinguagem com memória gerida, bibliotecas comuns e interoperabilidade.
Hejlsberg é o principal projetista de C#, mas a especificação também cita Scott Wiltamuth e Peter Golde entre os principais inventores. Apresentado amplamente em 2000, C# combinava tipagem estática, memória gerida, propriedades, eventos, delegados, metadados e exceções coerentes com .NET.
Zonas explicitamente unsafe permitem operações de baixo nível quando necessárias. A normalização pela Ecma e ISO distinguiu a definição da linguagem de uma implementação específica da Microsoft.
Fazer evoluir C# sem perder coerência
Uma linguagem amplamente adotada tem de coexistir com milhões de linhas existentes. Os genéricos de C# 2.0, lambdas, métodos de extensão e LINQ de C# 3.0, e mais tarde async/await, pattern matching e records aumentaram a expressividade, mas também o custo de aprendizagem. O desafio é fazer com que cada novidade se componha com o conjunto existente.
JavaScript em grande escala e TypeScript
No início dos anos 2010, as aplicações JavaScript tornaram-se grandes bases de código. A tipagem dinâmica favorecia a experimentação, mas dificultava navegação, refatoração e deteção antecipada de erros. Uma linguagem totalmente separada perderia, porém, browsers, Node.js, pacotes e comportamentos existentes.
A Microsoft apresentou TypeScript em outubro de 2012, com Hejlsberg como arquiteto principal. TypeScript acrescenta anotações e um sistema de tipos ao JavaScript e depois produz JavaScript normal.
Os tipos são apagáveis: ajudam na verificação, navegação e edição, mas desaparecem do resultado. Tipagem estrutural, propriedades opcionais, unions, genéricos, narrowing e tipos condicionais descrevem padrões já usados no ecossistema JavaScript.
Ficheiros de declaração e comunidade
Os ficheiros .d.ts permitem que uma biblioteca JavaScript ofereça ferramentas tipadas sem alterar o seu código de execução. DefinitelyTyped tornou possível uma adoção gradual para inúmeros pacotes. As declarações podem, contudo, estar incompletas ou desatualizadas; uma compilação sem erros não garante uma execução sem falhas.
Um projeto aberto que acompanha JavaScript
TypeScript é open source e desenvolvido publicamente. A equipa evita cada vez mais funcionalidades próprias de runtime e acompanha o processo ECMAScript. Os serviços da linguagem fornecem conclusão, navegação, refatoração e diagnósticos, prolongando uma preocupação já presente em Turbo Pascal: reduzir a distância entre intenção e feedback.
O trabalho de um arquiteto, não de um inventor solitário
Turbo Pascal, Delphi, C# e TypeScript são obras coletivas. O contributo específico de Hejlsberg surge nas decisões sobre velocidade de compilação, coerência entre linguagem e ambiente, adoção gradual, compatibilidade e capacidade das ferramentas para compreender o programa.
Porque Anders Hejlsberg continua importante
A sua carreira mostra que a história das linguagens não é apenas sintaxe e paradigmas. Tempo de compilação, mensagens de erro, conclusão automática, bibliotecas, migração e compatibilidade também moldam a experiência. TypeScript melhora JavaScript preservando a execução; C# coordena linguagem, runtime e bibliotecas mais profundamente, mas suporta um peso crescente de compatibilidade.
Cronologia
- 1960: nasce em Copenhaga.
- Início dos anos 1980: desenvolve Compass Pascal, depois PolyPascal.
- 1983: a Borland lança Turbo Pascal.
- 1995: lançamento de Delphi.
- 1996: entra na Microsoft.
- Final dos anos 1990: conceção do futuro C# com as equipas .NET.
- 2000: apresentação ampla de C#.
- 2002: primeira normalização Ecma de C#.
- 2007: C# 3.0 introduz LINQ e lambdas.
- 2012: apresentação de TypeScript; C# 5 expande
async/await.
- 2014: TypeScript 1.0.
Perguntas frequentes
Anders Hejlsberg criou Turbo Pascal?
Escreveu o compilador Pascal original adquirido pela Borland e tornou-se o arquiteto central de Turbo Pascal. O produto comercial e as suas versões posteriores resultaram, contudo, do trabalho coletivo das equipas Borland.
É o único criador de C#?
Não. É o principal projetista, mas a especificação também cita Scott Wiltamuth e Peter Golde. Linguagem, runtime, bibliotecas e ferramentas foram construídos por muitas equipas.
TypeScript substitui JavaScript?
Não. Analisa uma extensão tipada de JavaScript e produz JavaScript para os ambientes existentes.
Porque desaparecem os tipos TypeScript em runtime?
Servem para verificação estática e ferramentas de desenvolvimento. O seu apagamento preserva o comportamento e a compatibilidade com JavaScript.
O que liga Turbo Pascal, C# e TypeScript?
Todos encurtam o ciclo entre intenção, diagnóstico e resultado, embora sob restrições técnicas diferentes.