her.esy.fun/src/drafts/XXXX-professional-lessons-and-opinions.draft/index.org
Yann Esposito (Yogsototh) 4ddc050e2c
a few fixes
2021-04-27 15:21:06 +02:00

92 lines
2.8 KiB
Org Mode

#+TITLE: Professional Lessons and Opinions
#+AUTHOR: Yann Esposito
#+EMAIL: yann@esposito.host
#+DATE: [2019-07-04]
#+KEYWORDS: programming blog org-mode
#+DESCRIPTION: Different divagations about my experiences in the professional world of Software Developer
#+begin_comment
How to choose a programming language/paradigm to write with.
- programming is about making the program do what you want it to do.
- not much told, lot harder, and not as natural/intuitive; a program should not
do something you do not want it to do.
- programming paradigms, functional is superior because it better fit all
real-life scenarios.
- in Machine Learning, Kolmogorov complexity. Object Oriented is worse than
Functional programming to represent naturally many real life problems.
What did I learned? Is it a set of specific knowledge or can we discover great
common principles?
- restart from zero, tabula rasa, what is programming?
#+end_comment
I could talk to much about that.
But a few short written down lessons.
If you want to reach productivity and not necessarily enlightenment.
You have to stop learning and use what you know well.
And do not try to use things you don't know.
In particular, most programming languages/IDE/workflow/utils/tools have basic
and advanced features.
If your want to produce and deliver in time. Your best bet is to limit yourselves to
a minimal set of features that give you enough power of combination instead of
looking for a super generic strong solution.
Clojure for example has:
- functions
- higher-level functions
- destructuring
- defmethods
- protocols
- macros
- atoms, agents, core.async
- Java FFI
In fact, writing a fully working app you only need, basic data structure (edn) and functions.
That's it.
I was part of a team that created an advanced full featured app using only those.
No magic, just taking care of the state and not writing spaghetti code.
* How I choose
- Functional programming is superior to imperative and object oriented
languages
* Programming Languages Quality/Fun
- C, too low level, no higher level function, pb with portability
- Ruby, slow, concets not clean enough
- Python, C-like script, pretty efficient, but quite easy to write bad code, often slow
- Java, cumbersome, lot of boilerplate, not that bad, but bad underneath
philosophy (try to make programming scalable by multiple user, replace coder by gears,
in practice it is often wrong)
** Not suitable for production/ toy language
- logo
- basic
** Superior languages
Rust supersede: C, pascal, go
Clojure/Haskell supersede: Ada, C++, Eiffel, Ruby, Python
** Best choice of language depending of usage
- do something fast and dirty: zsh, perl for program shorter than 200 lines.
- very complex big software: Haskell, Clojure, Purescript, Clojurescript
- low level fast, fine grained memory control: Rust
# LocalWords: tabula rasa