Perlisisms
5 hours ago
- #Computing Insights
- #Software Development
- #Programming Philosophy
- Programming concepts are subjective; what is constant to one may be variable to another.
- Data structures create binding early, while functions delay it, advocating for late data structuring.
- Syntactic sugar can lead to excessive semicolon use, metaphorically causing 'cancer' in code.
- Programs are rarely standalone; they are often parts of larger systems and may not fit perfectly.
- Large data manipulation typically occurs through a limited set of methods.
- Symmetry reduces complexity and should be sought in all aspects of programming.
- Writing incorrect programs is easier than understanding correct ones.
- Low-level languages force programmers to focus on irrelevant details.
- It's more effective to have many functions operate on a single data structure than few on multiple ones.
- Early standardization and accumulation of idioms are key to expertise, akin to Shakespeare's idiom list.
- Procedures with many parameters likely indicate missed parameters or poor design.
- Recursion is fundamental to computation, trading descriptive power for time efficiency.
- Identical programs, when microcoded, become unique, highlighting implementation differences.
- Programs eventually become overly ornate (rococo) and then obsolete.
- Top-down design is ideal, except for initial attempts.
- Every program serves at least two purposes: intended and unintended.
- If someone nods while you explain your program, they might not be understanding; engage them.
- A program without loops or structured variables is not worth writing.
- A programming language is valuable only if it changes how you think about programming.
- Modularity can lead to misunderstandings; hiding information requires clear communication checks.
- Optimization can hinder the evolution and adaptability of a system.
- A strong command language is essential for a good system.
- Understanding a program requires empathizing with both the machine and the program itself.
- Learning programming from childhood might improve adult comprehension of programs.
- Complex information is best understood dynamically, through movement or flow, rather than statically.
- Some programming ideas are poorly expressible in all existing languages.
- Once you know how to write a program, delegate the actual coding to someone else.
- Measuring programming progress is difficult; some projects, like cathedrals, take centuries.
- Adding cycles to control graphs, not just nodes, can rejuvenate systems like a face-lift.
- Programming solutions are often special cases of more general principles, recognized too quickly.
- Simplicity arises from dealing with complexity, not preceding it.
- Programmers are judged by thorough case analysis, not just ingenuity or logic.
- The 'eleventh commandment' humorously questions whether computing is ordained or forbidden.
- Strings, as stark data structures, hide information and cause process duplication.
- Great programmers, like Michelangelo, have innate talent that resists conventional teaching.
- Using a program to prove mathematical theorems doesn't change mathematics; it may show the theorem's unimportance.
- The most important computer is the human mind, seeking external emulation; standardizing real computers would be disastrous.
- Structured programming aligns with the logical law of the excluded middle.
- A picture is worth many words, but not all word sets can be described with pictures.
- Error-free programs are elusive; only the 'third' unspecified method works.
- Some languages absorb change but resist progress.
- A programmer's perspective can be gauged by their view on FORTRAN's continued relevance.
- In software, early success (the early bird) can create problems (makes the worm).
- The fetch-execute cycle may be the only universal in computing.
- Computation aims to emulate synthetic abilities, not understand analytic ones.
- Programming, like punning, involves wordplay and creativity.
- There is no such thing as a free variable, echoing economic principles.
- "Alice in Wonderland" is the best programming book for laymen, as it is for many topics.
- Abandoning assembly language was a sinful loss of efficiency, though LISP machines allow liberation from constraints.
- Understanding knowledge-based systems will come with experience, albeit with singed fingertips.
- Home computers won't change homes but might revive social spots like saloons.
- Systems have infinite subsystems, leading to perpetual restarts.
- Good ideas often get lost in semantic gaps during implementation.
- Beware of Turing tar-pits where anything is possible but nothing interesting is easy.
- LISP programmers understand value but ignore cost.
- Software is perfectible yet arbitrarily changeable, creating constant tension.
- Changing specifications to fit programs is easier than the reverse.
- Complexity can be ignored, suffered, avoided, or removed, with geniuses achieving the latter.
- Programming languages lack the flexibility of English, where any word can be verbed.
- Simplicity can hinder the pursuit of unattainable goals.
- Errors in programming lead to rebirth and improvement.
- Invariants in computing are temporary and ephemeral.
- Programs that 'learn' often reflect our learning, not theirs.
- Technique justifies means and survives even when goals fail.
- Computers process numbers, not symbols; understanding is measured by arithmetization.
- Making variables is easy, but controlling constancy duration is tricky.
- The distinction between 'algorithm' and 'program' consumes unnecessary psychic energy.
- Data structures imply independent processing; languages should support both.
- Superb programming languages emerge unpredictably, roughly every five years.
- Programmers from different language tribes need a universal sign language, like Indians did.
- Documentation is like term insurance, rarely relied upon but satisfying to have.
- An adequate bootstrap is paradoxical and contradictory.
- A language's strengths, not weaknesses, dictate its change gradient, trapping it in its origins.
- Software may be meant to be discarded, like soap bubbles.
- The computing field constantly needs new cliches for comfort.
- Users, not creators, should parameterize procedures.
- Man-computer-algorithm interactions are unbalanced, like musical chairs.
- If a computer speaks English, it's likely Japanese-made, humorously noting language origins.
- A year in AI can make one believe in God.
- Prolonged computer use turns mathematicians into clerks and vice versa.
- Turning obvious ideas into useful programs is frustrating.
- Programs can achieve near-impossible feats, like proving Fermat's next-to-last theorem.
- The difference between a Turing machine and a modern computer is like climbing Everest vs. building a hotel on top.
- Research labs work on what others will think of tomorrow.
- Despite APL's appeal, FORTRAN gets investment, even in China.
- The procedure-to-data ratio in active databases can't be made arbitrarily small.
- Pico computers would fit in a semantic niche smaller than micro.
- Computers aren't to blame for inadequate equations like Maxwell's.
- Hand calculators can make one forget arithmetic without teaching computing.
- Computation has advanced technology, making 'the tree flower'.
- Computers are versatile, like Lon Chaney's machine of a thousand faces.
- Computers pollute by producing indistinguishable outputs and wastes.
- Those wanting a language that does exactly what they wish should be given a lollipop, as it's unrealistic.
- Interfaces tidy systems but don't accelerate growth; functions do.
- Be responsible for your good ideas.
- Computers expose opportunities rather than impose order.
- Professors who narrowly define computer science deserve compassion for their students.
- Mean time to failure in computing keeps decreasing.
- In symbiosis, humans must adjust; machines can't.
- As long as programs exist, there will always be more to program.
- Handle failure by improving; handle success by realizing you may have solved the wrong problem.
- Formal methods can't bridge informal to formal reasoning.
- Purely applicative languages are not very applicable in practice.
- A system's value is proven by its existence.
- Complexity can only be made aware of, not fully communicated.
- Strings are unreliable for conveying sense but are our only communication currency.
- PL/I's nature is debated: is it Bactrian (two-humped) or Dromedary (one-humped)?
- When programmers meet to critique, both may fall silent, indicating mutual understanding or difficulty.
- VLSI allows packing immense computing power, like 100 ENIACS in a square centimeter.
- Editing involves rewording and refining.
- The Roman Empire's collapse is humorously linked to office automation in Latin.
- Computer Science is embarrassed by the computer's limitations.
- Connecting neuroscience and psychology will come from software study.
- Natural language is unnatural within computers.
- Programming is conceptually obvious but practically impossible for most.
- Certainty in knowledge comes from programming, not just learning, writing, or teaching.
- Modern education resists teaching programming due to its demands for planning, discipline, and self-criticism.
- Imagining a society with only computer-robots as menials requires great imagination.
- Programming is an unnatural act, contrary to human instincts.
- Adapting old programs to new machines often means making new machines behave like old ones.