Covariance and Contravariance
I have found variance one of the more difficult things to get my head around in computer science, so I have tried to document the basics as a way of teaching myself.
Read on →Examined software development
Thinking in public about strange and interesting software development ideas and processes.
I have found variance one of the more difficult things to get my head around in computer science, so I have tried to document the basics as a way of teaching myself.
Read on →
As part of my continuing efforts to clarify fundamental software engineering concepts, I recently read and summarised the most interesting points of the functional programming Wikipedia page.
Read on →
I was recently reading the Wikipedia articles of imperative programming and declarative programming to brush up on my understanding of the distinction.
Read on →
I have been recently trying to improve my understanding of some of the fundamental concepts in computer science. I looked at procedural programming this time and attempted to extract the important points of the Wikipedia article.
Read on →
I have been recently trying to get a better handle on some terms I possess a casual understanding of and use regularly in conversation, but suspect I don’t really have a full appreciation for. Structured programming was the first of these terms. What follows is a summary of the more interesting bits of the Wikipedia article.
Read on →
I have already written on tips for creating spaced repetition cards, but here I hope to summarise a few of Jack Kinsella’s tips specific to memorising programming languages (and here also).
Read on →
Spaced repetition is a revision technique that minimises the number of exposures to a piece of subject matter required to commit it to longterm memory. This is achieved by altering the frequency in which items of revision material are shown to the user based on how easily it was recalled last time; the content is shown to the user right before he or she is due to forget it - and not before, avoiding wasting time on premature revision. Anki is a free and popular tool available on Windows, Mac and mobile devices that allows you to synchronise your progress between all your devices via Ankiweb.
Read on →
One of the more useful things I took from Steve McConnel’s Code Complete is a procedure for systematically extracting smaller classes from a large one.
Read on →
I have already covered what I picked up from Steve McConnel’s Code Complete and Robert C. Martin’s Clean Code on packaging and labeling blocks of code and simplifying their inputs. Now I intend to cover what the two volumes offer in regards to reducing the complexity of the shape of, and relationships between, code segments. As is consistently emphasised through McConnel’s Code Complete, the author of a piece of code is beholden to its reader and should write for readability and maintainability, as if often ends up being the same person or a colleague.
Read on →
Reading Steve McConnel’s Code Complete and Robert C. Martin’s Clean Code, I encountered a subject that I previously hadn’t given much thought to but is of great importance. McConnel talks of reducing the cognitive load of reading and understanding code by writing for humans first, computers second; where the reader of a piece of code should be the author’s highest priority - if not only because these often end up being one and the same. An important part of this is facilitating quick code navigation to allow the reader to find what they need, and providing useful levels of abstraction so the reader need not concern themselves with irrelevant details.
Read on →