Sobre o serviço
TraduzidoEu crio sistemas rápidos e corretos em OCaml e escolho esta linguagem precisamente pelo que importa sob carga: tipagem estática estrita, correspondência de padrões exaustiva e desempenho próximo ao C. Quando o compilador aceita meu código, classes inteiras de erros já são eliminadas, e a lógica que chega aos usuários é o que eu realmente pensei, não uma coleção de suposições otimistas. Eu trabalho em compiladores e ferramentas de linguagem, motores financeiros onde erros de arredondamento são inaceitáveis, e backends que devem permanecer ativos enquanto tudo ao seu redor muda.
Eu abordo a maioria das tarefas tornando estados inválidos inexprimíveis. Eu modelo o domínio do problema com tipos variantes e registros para que a própria estrutura de dados imponha as regras, e a correspondência de padrões cobre cada caso conhecido pelo compilador. Este hábito transforma requisitos vagos em um design onde é difícil cometer erros, e mantém o código honesto à medida que o número de recursos cresce. Eu levo o desempenho a sério também: alocação de memória previsível, estruturas de dados densas e perfilagem antes da otimização para que os números melhorem onde são medidos, não onde apenas parece lento.
Você obtém módulos legíveis e bem documentados, um conjunto de testes que exercitam exatamente os caminhos complexos, e uma construção que um colega pode iniciar sem uma semana de conhecimento tribal. Estou confortável em interagir com código C existente, incorporando um serviço em uma grande pilha, ou implantando um projeto do zero a partir de um repositório vazio. Nomeie a restrição que o preocupa, e eu projetarei o sistema em torno dela primeiro.
— Compiladores, analisadores, linguagens específicas de domínio e análise estática
— Backends financeiros e de negociação de baixa latência
— Modelagem de domínio através de tipos e refatoração
— Interação com C, perfilagem e ajuste
Eu abordo a maioria das tarefas tornando estados inválidos inexprimíveis. Eu modelo o domínio do problema com tipos variantes e registros para que a própria estrutura de dados imponha as regras, e a correspondência de padrões cobre cada caso conhecido pelo compilador. Este hábito transforma requisitos vagos em um design onde é difícil cometer erros, e mantém o código honesto à medida que o número de recursos cresce. Eu levo o desempenho a sério também: alocação de memória previsível, estruturas de dados densas e perfilagem antes da otimização para que os números melhorem onde são medidos, não onde apenas parece lento.
Você obtém módulos legíveis e bem documentados, um conjunto de testes que exercitam exatamente os caminhos complexos, e uma construção que um colega pode iniciar sem uma semana de conhecimento tribal. Estou confortável em interagir com código C existente, incorporando um serviço em uma grande pilha, ou implantando um projeto do zero a partir de um repositório vazio. Nomeie a restrição que o preocupa, e eu projetarei o sistema em torno dela primeiro.
— Compiladores, analisadores, linguagens específicas de domínio e análise estática
— Backends financeiros e de negociação de baixa latência
— Modelagem de domínio através de tipos e refatoração
— Interação com C, perfilagem e ajuste