Acerca del servicio
TraducidoCreo sistemas rápidos y correctos en OCaml y elijo este lenguaje precisamente por lo que importa bajo carga: tipado estático estricto, coincidencia de patrones exhaustiva y rendimiento cercano a C. Cuando el compilador acepta mi código, toda clase de errores ya se ha eliminado, y la lógica que llega a los usuarios es lo que realmente pensé, no una colección de suposiciones optimistas. Trabajo en compiladores y herramientas de lenguaje, motores financieros donde los errores de redondeo son inaceptables, y backends que deben mantenerse vivos mientras todo a su alrededor cambia.
Enfrento la mayoría de las tareas haciendo que los estados inválidos sean inexprimibles. Modela el dominio del problema con tipos variantes y registros para que la estructura de datos misma imponga las reglas, y la coincidencia de patrones cubra cada caso conocido por el compilador. Este hábito convierte requisitos vagos en un diseño donde es difícil cometer errores, y mantiene el código honesto a medida que crece el número de características. También tomo en serio el rendimiento: asignación de memoria predecible, estructuras de datos densas y perfilado antes de la optimización para que los números mejoren donde se miden, no donde simplemente se siente lento.
Obtienes módulos legibles y bien documentados, un conjunto de pruebas que ejercitan exactamente los caminos complejos, y una construcción que un colega puede iniciar sin una semana de conocimiento tribal. Me siento cómodo interfiriendo con código C existente, integrando un servicio en una gran pila, o desplegando un proyecto desde cero desde un repositorio vacío. Nombra la restricción que te preocupa, y diseñaré el sistema en torno a ella primero.
— Compiladores, analizadores, lenguajes específicos de dominio y análisis estático
— Backends financieros y de trading de baja latencia
— Modelado de dominio a través de tipos y refactorización
— Interfacing con C, perfilado y ajuste
Enfrento la mayoría de las tareas haciendo que los estados inválidos sean inexprimibles. Modela el dominio del problema con tipos variantes y registros para que la estructura de datos misma imponga las reglas, y la coincidencia de patrones cubra cada caso conocido por el compilador. Este hábito convierte requisitos vagos en un diseño donde es difícil cometer errores, y mantiene el código honesto a medida que crece el número de características. También tomo en serio el rendimiento: asignación de memoria predecible, estructuras de datos densas y perfilado antes de la optimización para que los números mejoren donde se miden, no donde simplemente se siente lento.
Obtienes módulos legibles y bien documentados, un conjunto de pruebas que ejercitan exactamente los caminos complejos, y una construcción que un colega puede iniciar sin una semana de conocimiento tribal. Me siento cómodo interfiriendo con código C existente, integrando un servicio en una gran pila, o desplegando un proyecto desde cero desde un repositorio vacío. Nombra la restricción que te preocupa, y diseñaré el sistema en torno a ella primero.
— Compiladores, analizadores, lenguajes específicos de dominio y análisis estático
— Backends financieros y de trading de baja latencia
— Modelado de dominio a través de tipos y refactorización
— Interfacing con C, perfilado y ajuste