Über den Service
ÜbersetztIch erstelle schnelle und korrekte Systeme in OCaml und wähle diese Sprache genau für das, was unter Last wichtig ist: strenge statische Typisierung, vollständige Mustererkennung und Leistung nahe C. Wenn der Compiler meinen Code akzeptiert, sind bereits ganze Klassen von Fehlern ausgeschlossen, und die Logik, die die Benutzer erreicht, ist das, was ich tatsächlich durchdacht habe, nicht eine Sammlung optimistischer Annahmen. Ich arbeite an Compilern und Sprachwerkzeugen, finanziellen Engines, bei denen Rundungsfehler inakzeptabel sind, und Backends, die am Leben bleiben müssen, während sich alles um sie herum ändert.
Ich gehe die meisten Aufgaben an, indem ich ungültige Zustände unausdrückbar mache. Ich modelliere das Problemdomain mit Variantentypen und Datensätzen, sodass die Datenstruktur selbst die Regeln durchsetzt, und die Mustererkennung jeden Fall abdeckt, der dem Compiler bekannt ist. Diese Gewohnheit verwandelt vage Anforderungen in ein Design, bei dem es schwer ist, Fehler zu machen, und hält den Code ehrlich, während die Anzahl der Funktionen wächst. Ich nehme die Leistung ebenfalls ernst: vorhersehbare Speicherzuweisung, dichte Datenstrukturen und Profiling vor der Optimierung, sodass sich die Zahlen dort verbessern, wo sie gemessen werden, nicht dort, wo es sich nur langsam anfühlt.
Sie erhalten lesbare und gut dokumentierte Module, eine Reihe von Tests, die genau die komplexen Pfade abdecken, und einen Build, den ein Kollege ohne eine Woche Stammeswissen aufsetzen kann. Ich bin damit vertraut, mit bestehendem C-Code zu interagieren, einen Dienst in einen großen Stack einzubetten oder ein Projekt von Grund auf aus einem leeren Repository bereitzustellen. Nennen Sie die Einschränkung, die Sie beunruhigt, und ich werde das System zuerst darum herum entwerfen.
— Compiler, Parser, domänenspezifische Sprachen und statische Analyse
— Niedriglatenz-Finanz- und Handels-Backends
— Domänenmodellierung durch Typen und Refactoring
— Interfacing mit C, Profiling und Tuning
Ich gehe die meisten Aufgaben an, indem ich ungültige Zustände unausdrückbar mache. Ich modelliere das Problemdomain mit Variantentypen und Datensätzen, sodass die Datenstruktur selbst die Regeln durchsetzt, und die Mustererkennung jeden Fall abdeckt, der dem Compiler bekannt ist. Diese Gewohnheit verwandelt vage Anforderungen in ein Design, bei dem es schwer ist, Fehler zu machen, und hält den Code ehrlich, während die Anzahl der Funktionen wächst. Ich nehme die Leistung ebenfalls ernst: vorhersehbare Speicherzuweisung, dichte Datenstrukturen und Profiling vor der Optimierung, sodass sich die Zahlen dort verbessern, wo sie gemessen werden, nicht dort, wo es sich nur langsam anfühlt.
Sie erhalten lesbare und gut dokumentierte Module, eine Reihe von Tests, die genau die komplexen Pfade abdecken, und einen Build, den ein Kollege ohne eine Woche Stammeswissen aufsetzen kann. Ich bin damit vertraut, mit bestehendem C-Code zu interagieren, einen Dienst in einen großen Stack einzubetten oder ein Projekt von Grund auf aus einem leeren Repository bereitzustellen. Nennen Sie die Einschränkung, die Sie beunruhigt, und ich werde das System zuerst darum herum entwerfen.
— Compiler, Parser, domänenspezifische Sprachen und statische Analyse
— Niedriglatenz-Finanz- und Handels-Backends
— Domänenmodellierung durch Typen und Refactoring
— Interfacing mit C, Profiling und Tuning