#computing #code #programming # Related - [[Kolmogorov complexity]] - [[Software 2.0]] - [[Software 3.0]] # Programming >Programs should be written for people to read, and only incidentally for machines to execute. >~ [[Paul Graham]] >The computer world is like an intellectual Wild West, in which you can shoot anyone you wish with your ideas, if you’re willing to risk the consequences >~ [[Paul Graham]] Programming: a transfer of [[Information|information]] between [[Computing/Intelligence|intelligent]] [[Physic/System/System|systems]]. I believe it works for even the tiniest [[Information|information]], such as me saying to you, "the cat is black". It will slightly program your [[Mind|mind]] to associate cat and black for example. >Hacking and painting have a lot in common. In fact, of all the different types of people I’ve known, hackers and painters are among the most alike. >~ [[Paul Graham]] [[Philosophy/Epistemology/Knowledge|Knowledge]] is resilient [[Information|information]], **programming** allows you to create knowledge. Marketing people are pretty good at programming humans. Teachers as well, [[School|school]] is mainly a programming institution, we optimize children minds to be the best for [[Politic|society]], for the [[Genome|genome]]. ## The [[Art]] of programming >What hackers and painters have in common is that they’re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. >~ [[Paul Graham]] [[Mathematical universe|The world is computation]] -> life is computation -> it was believed that god created life -> having **programming** [[Philosophy/Epistemology/Knowledge|knowledge]] makes you capable of creating life, and therefore knowledge, so you are a god. ## The subjectivity of code >Early in my career as an engineer, I’d learned that all decisions were objective until the first line of code was written. After that, all decisions were emotional. >~ [[Ben Horowitz - The Hard Thing About Hard Things_ Building a Business When There Are No Easy Answers]] There is not necessarily a perfect objective way to code, but people still thinks so and it adds a lot of friction, but programming is about creating great products useful to humans, not creating code that you find beautiful. ## Typing on a keyboard to create [[Wealth|wealth]] >A programmer can sit down in front of a computer and create wealth. >~ [[Paul Graham]] ## Good code = positive [[Wealth|wealth]], bad code = negative [[Wealth|wealth]] >A great programmer, on a roll, could create a million dollars worth of wealth in a couple weeks. A mediocre programmer over the same period will generate zero or even negative wealth (e.g. by introducing bugs). >~ [[Paul Graham]] ## [[Via Negativa|Less is more]] >Good design is simple. You hear this from math to painting. In math it means that a shorter proof tends to be a better one. Where axioms are concerned, especially, **less is more**. It means much the same thing in programming. For architects and designers, it means that beauty should depend on a few carefully chosen structural elements rather than a profusion of superficial ornament. >~ [[Paul Graham]] ## Length = Power (you perverted mind thinking to something else 🤦‍♂️) >**The most convenient measure of power is probably code size**. The point of high-level languages is to give you bigger abstractions—bigger bricks, as it were, so you don’t need as many to build a wall of a given size. So the more powerful the language, the shorter the program (not simply in characters, of course, but in distinct elements). >~ [[Paul Graham]] [[Kolmogorov complexity]] says that the shorter your code that do what you want, the better it is, i.e. [[Occam razor]], [[Simplicity]]. ## Length = [[Philosophy/Rationality/Time|Time]] [[Kolmogorov maintainability]] >**If your program would be three times as long in another language, it will take three times as long to write**—and you can’t get around this by hiring more people, because beyond a certain size new hires are actually a net lose. [[Fred Brooks]] described this phenomenon in his famous book The Mythical Man-Month, and everything I’ve seen has tended to confirm what he said. >~ [[Paul Graham]] ## Macros >Garbage collection, introduced by Lisp in about 1960, is now widely considered to be a good thing. Dynamic typing, ditto, is growing in popularity. Lexical closures, introduced by Lisp in the early 1960s, are now, just barely, on the radar screen. Macros, introduced by Lisp in the mid 1960s, are still terra incognita. >~ [[Paul Graham]] # Links http://paulgraham.com/gh.html?viewfullsite=1