Programming
Currently Learning (for)
CPP
- Learning it for solving DSA.
- Also the fact that is similar to C.
python
- First programming language that I have learned.
- The one most comfortable with.
- I know they break readability but oh god, do I love py.oneliners.
JS
- The modern web is bloated with JS. I hate this. But it is also what makes most of web possible.
- Gotta understand this mess.
Liquid
- For [[ Jekyll ]] for https://notes.whoibrar.com
[[ Java ]]
- Not actively learning, picked up some from people around me.
Not Programming
HTML & CSS
- Figuring out WebDev
[[ Markdown ]]
- Everything I write is almost every time in markdown, I know it isn’t but it can be considered plain text.
Want to Learn (also why)
[[ Rust ]]
-
It has no garbage collector and its awesome!
- Heard that sentence many times but did make much sense. Later I watched video titled Rust makes you feel like a GENIUS - YouTube and it did a great job of introducing Borrow Checker
- Borrow Checker has two rules for Data
- One owner
- Multiple Readers and Single Writer
- Also the fact that it can achieve near C speeds.
[[ Ruby ]]
- I did care about the language, it until I found about the Lucy Stiff and book Why’s (Poignant) Guide to Ruby, will definitely want to finish that book sometime.
[[ Lisp ]]
- The Roots of Lisp suggests that lips has taken a different turn from C family.
- Its programmable programming language aka Metaprogramming
- Its has cool - sexy name. Also a decent Logo.
Esolangs
Learning Resources
-
Learn X in Y Minutes
- Cheat sheets for popular languages and tools
-
programming-idioms.org/coverage
- Programs to do small tasks and has comparison mode
-
Side by Side Comparison - Hyperpolyglot
- Extensively compare group of languages
-
Rosetta Code
- Library of code for problems in many different languages
- 99 Bottles of Beer - Browse category A
- Help:Similar Sites - Rosetta Code
- Algorithmist Algorithms and problem sets
- Programming Languages Side by Side - Hyperpolyglot
Programming 101
- Programming is about
- Data analysis
- Data Transformation
- Data Generation
- Fundamentals of Every Programming Language
- Operations
- Types : Arithmetic, Logic etc
- Usually give a single output for two inputs
- Generally, generate new value rather than mutating existing
- Variables
- Computer variables differ from mathematical variables in that they can store different values at different times.
- Branching
- Looping
- Functions
- Input / Output
- Operations
- Program is set of functions
- any function can call any other
- no code exists outside of functions
- execution begins by calling
main
function - variables of function exist only in that function
- System Calls
- capabilities exposed by Operating system for program management and i/o.
- Invoked by hardware mechanism (CPU instruction)
- Invoked in most languages by special functions
- Metaprogramming -> source
- What is it
- Metaprogramming allows us to extend a language with new features by defining how the written source code is to be transformed into a more low-level code.
- These extensions can be big new language feature like support for object-oriented programming, or small domain-specific extension which would be too specific to be included in the standard.
- What is it
More Terms
- Why is it Called Bugs
- Origins from when Analog Computing was used and there were real bugs stopping the program from running or causing other issues
- Code Smell
- When the program doesn’t particularly give an error but it still indicates a deeper problem with the code
- Unreachable Code
- Basically, code that will never be reached
- Dead Code
- Code whose results are not used even if it is executed.
Favorite Quotes
“The key to performance is elegance, not battalions of special cases.”
~ Jon Bentley and Doug McIlroy
Premature optimization is the root of all evil
~ Donald Knuth
“When C coders talk about strong typing they mean hitting the keys harder”
~ unknown
“We still have an error, which is different than previous error, that means making some progress “
~ Code Beauty
Return to CompSci