2019-07-14 08:27:00 +00:00
|
|
|
#+TITLE: Professional Lessons and Opinions
|
|
|
|
#+AUTHOR: Yann Esposito
|
2019-07-29 22:10:54 +00:00
|
|
|
#+EMAIL: yann@esposito.host
|
2019-08-17 21:46:10 +00:00
|
|
|
#+DATE: [2019-07-04]
|
2019-07-14 08:27:00 +00:00
|
|
|
#+KEYWORDS: programming, blog, org-mode
|
2019-08-17 21:46:10 +00:00
|
|
|
#+DESCRIPTION: Different divagations about my experiences in the professional world of Software Developer
|
2019-07-14 08:27:00 +00:00
|
|
|
|
|
|
|
#+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.
|
|
|
|
|
2019-08-17 21:46:10 +00:00
|
|
|
What did I learned? Is it a set of specific knowledge or can we discover great
|
2019-07-14 08:27:00 +00:00
|
|
|
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.
|
|
|
|
|
2019-08-17 21:46:10 +00:00
|
|
|
In particular, most programming languages/IDE/workflow/utils/tools have basic
|
2019-07-14 08:27:00 +00:00
|
|
|
and advanced features.
|
2019-08-17 21:46:10 +00:00
|
|
|
If your want to produce and deliver in time. Your best bet is to limit yourselves to
|
2019-07-14 08:27:00 +00:00
|
|
|
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.
|
2019-08-17 21:46:10 +00:00
|
|
|
No magic, just taking care of the state and not writing spaghetti code.
|
2019-07-14 08:27:00 +00:00
|
|
|
|
|
|
|
* How I choose
|
|
|
|
- Functional programming is superior to imperative and object oriented
|
|
|
|
languages
|
2019-07-19 23:12:57 +00:00
|
|
|
|
|
|
|
* 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
|
|
|
|
|
2019-08-24 13:57:09 +00:00
|
|
|
** Superior languages
|
2019-07-19 23:12:57 +00:00
|
|
|
|
2019-08-24 13:57:09 +00:00
|
|
|
Rust supersede: C, pascal, go
|
2019-07-19 23:12:57 +00:00
|
|
|
|
2019-08-24 13:57:09 +00:00
|
|
|
Clojure/Haskell supersede: Ada, C++, Eiffel, Ruby, Python
|
2019-07-19 23:12:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
** 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
|
|
|
|
|
2019-08-17 21:46:10 +00:00
|
|
|
|
|
|
|
# LocalWords: tabula rasa
|