her.esy.fun/src/drafts/XXXX-professional-lessons-a.../index.org

92 lines
2.8 KiB
Org Mode
Raw Normal View History

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]
2021-04-27 13:21:06 +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