Excerpts
- Never has a character set been quite so entertaining.
- Project planning tools that are so expensive only higher management
can afford them, and so sophisticated noone can get them to do what
they want.
- Idiomatic C++ varies across both time and team.
- Anyone who has ever tried to release a software product knows how it feels to slide down the slope of this curve
- They can also be used to create modules which
collect together components from the same repository.
- When we think more carefully, though, we realise these fears are
misplaced and often apply equally to desktop software.
- I can understand C++ programmers objecting to the explicit
self
Python requires for member access.
- Python famously comes with batteries included, but full details of their use belongs online
- We have iteration on a rapidly diminishing range, not recursion, and a linear operation, O(S).
- The great thing about CVu and Overload is that they are written by
software developers for software developers.
- I do think, thanks.
- 1 is your grandmother and 10 is Bjarne Stroustrup.
- The most important factor in their success, though, is their willingness to experiment, combined with persistence and patience.
- Flaws, in particular, scale rapidly
- For me, it's not just what the shell tools can do, it's the example they set.
- Good design is simple, not severe. Good code is concise, not minimal.
- Programming will increasingly be about the control of side-effects
- Has anyone else noticed the square-jawed smiley you get when you chop the last element from a Python list?
- Every time I hack a style sheet in this way it seems like trying to
balance a wobbly table.
- A good coding standard shouldn't be there to constrain developers or force
them to comply to a particular coding style.
- You did notice the Latin Capital Letter O didn't you? The one next
to the number 0.
- I'll confess to having programmed on a plane myself
- It was the first very high-level language I fell for.
- But the best route to an accurate answer is easier and quicker.
- The old C++ code has been left to rot but the idea within it remains green, recoded in Python
- Reduced clutter. Enhanced clarity. Win win.
- I'm lazy. I found myself performing the same mechanical
sequence of actions every morning: check what's changed, review the
changes, update, rebuild. A machine could do it for me – so now a
machine does do it for me.
- In this case, I had to put in the batteries myself.
- The whole business of maintaining two versions of the software (one
for use by developers, another for users) is problematic
- You haven't actually tested your new hook script so it probably
doesn't do what you meant it to.
- How would you draw a position reached in a game of chess, showing both the board and the pieces?
- A fine example of how to design and document a programming interface
- Defensive programming can cause defects to become entrenched
- One reason I like Python and writing about Python is its platform independence. Linux, Windows, OS X etc. — we can all run the same code. For this particular application, that's less true.
- But ultimately, the power of the programmer is what matters.
- This approach of learning how to program by reading code is far from
radical but is perhaps better suited to some languages than others.
- The problem is, your working copy is based on the trunk and your changes don't really belong on the trunk.
- Software is supposed to be soft and
dynamic languages help keep it that way.
- With its special cases, boolean literals, multiple returns (4, count them!), disembodied and infinite loops, this code fails to exhibit conventional beauty. Yet it is beautiful.
- In my experience simplicity must be discovered, not designed. Thus a simple design derives from – and may indeed break – a more complex one.
- But anyone who breaks the build deserves an ASBO. It hinders other team members and shows disregard for best practice. In an age of atomic commits, powerful computers, and virtualisation, there can be no excuse.
- My boss
is a mac evangelist, keen to convert those lost souls who continue
to suffer other platforms
- Not many compiler writers connect so well with an audience.
- They may be infinite (remember the Pearly Gates club never closes!) but that doesn't mean they take up much space.
- This code wouldn't go any way towards persuading me I should bother with Python.
- The shootout is all about who's got the fastest gun, rather than who's
the most accurate.
- That's four restarts. Can I go home now?
- In a rare
moment of generosity, C++ (and C) specifically allow for it.
- I'm not suggesting authors are thick-skinned or deserve rough treatment, but I think anyone who writes technical material learns about that material at the same time – yes, really, that's one of the main benefits of writing. And however expert the reviewers, that learning process doesn't stop once the article is published.
- As programmers, perhaps we're rather too used to wrestling them into
submission – perhaps we sometimes secretly enjoy it – and
as a consequence we expect other users to tolerate such impudence.
- I don’t think comments can or should be entirely eliminated from source code -- here’s a case where they help.
- It's far better to provide a well-stocked library than to attempt
to write your own diluted imitations of Sutter and Meyers.
- When should you put third party source code under version
control, and when should you put in pre-built binaries?
- Computer systems are punchlines; design is a matter of figuring out the joke
- Perl has always had a great sense of humour; and, like all great humour, it deserves taking seriously.
- That’s one of the reasons I like Python: it’s hard to get away with poorly laid out code.
- An interpreted language has much to offer in this area, allowing us to query and shape images dynamically
- Python's clean and transparent design takes the credit
- I had to admire the way the language grabbed all the characters on the keyboard and squeezed the juice out of them.
- The class I'd just written seemed to be working just fine. But when I ran
my unit tests I realised I'd made a silly mistake.
- I'm generally unprincipled and promiscuous when it comes to tool selection: whatever works and is to hand will do.
- You specify, you cost, you plan, you grumble about Microsoft Project; you consider the competition, envisage the end game, pin an end date on the calendar. All of a sudden Hofstadter's Law has teeth.
- As a C++ programmer brought up on C, I suppose I suffered the
usual prejudice: that Java would be a feeble language designed to stop
feeble programmers from getting hurt too badly.
- Once again our building block is the stream but our connector, the pipeline operator, |, doesn't allow this kind of abuse
- It's subtle, efficient, and dazzlingly clever!
- Thinking? It's certainly common to speak of computers as being stupid or annoying.
- With a little ingenuity you can test how the pre-commit hook would have
responded to such a faulty transaction which, in future, we would like
to prohibit.
- The Unix command shell contains a lot of what I like in a programming environment: it's dynamic, high-level, interpreted, flexible, succinct.
- Can
something be too large for version control? Too immutable?
Conversely, something be too small? Too transient?
- Now try
designing a GUI which can analyse any log file ever.
- C++ does the
heavy lifting; Python manages the complex application logic.
- Ruby is a so-called "dynamic" language, which is a polite way of saying that it's hugely unpredictable.
- Software is soft: there's no problem moving a load-bearing wall
- What's more, when you start treating your personal environment as
something deserving version control, you find it becomes better
organised.
- Software developers don't feel secure unless their source repository
is safely backed up – or at least they shouldn't – and they are
reluctant to suffer repository downtime or excessive maintenance
overheads.
- Many closed source projects would regard it as a sign of weakness to publish this kind of information
- All programming languages I know of are firmly stuck in the 7-bit ASCII range, where the only currency character is the good old American $ 0x24 DOLLAR SIGN.
- Sometime later, the Red Bear project also decides to use
Subversion.
- The equivalence of code and data marks Lisp's apotheosis
- A 50% rule
applies – each member spends half the time working on fixed projects
and the other half working on self-directed projects.
- Use the compiler to detect compilation problems.
- The irony is that I only use them for basic stuff, and may well resort to something with a GUI when attempting something out of the ordinary.
- I never expected any money so this was exciting
- I never had to go through the tiresome business of compiling, sorting out dependencies, locating include- and library- paths, declaring object types – tasks which I'd always associated with real programming.
- Ruby supports binary literals. It's always been mystery to me why
other languages don't support these – you always need them when you
need to pack and unpack binary data.
- Python does have a standard
this
library, though. It isn't
documented. It isn't even tested.
- Armed with this evidence, I soon found a quick way to speed things up
- Today I had a chat with a computer
- It could be worse. What if the backslash key
had fallen off our keyboard? Remarkably – and, as far as I know,
uniquely – C++ caters for this situation.
- We have a compact suite of tools, each with its own responsibility, which cooperate using simple interfaces.
- On other occasions I want a quick fix: perhaps I'm using a technology I really don't care much about, and am therefore reluctant to invest any great effort in.
- Any computer scientist can spot the recursion and the associated risk of exponential overrun.
- For managing change, give me stable software.
- When we say we want readable code, we don't mean we want to sit in a comfortable chair and page through a Java-saga.
- The itertools module supplies the components. We connect.
- Now though, despite – maybe because of – its imminent demise,
reduce
refuses to be ignored.
- Adding fairly simple features (such as initialisers or chained-constructor) to C++ was requiring enormous amounts of time and energy from equally enormously talented and dedicated people, because C++ is such an insanely complicated language.
- Let's repeat that: the file you check out is the same as the file you checked in.
Surely this is the behaviour we really want from a version control system?
- Version control should be frictionless, the easy bit. Which it is.
- Small, powerful language, large, structured library of usable software.
- What's worse, noone on the team really questioned this mode of operation.
- If a C++ expert like Andrew Koenig has trouble with build dependencies, what hope for the rest of us?
- The real joke is that we
continue to tolerate applications with bloated user interfaces,
feature-creep, and enforced-upgrades.
- Free as in free beer, not free as in without cost.
- As a rule of thumb, I reckon Python to be an order of magnitude more wasteful of CPU cycles and memory than my favourite low-level language, C++.
- How could I pitch Python in just 3 syllables?
- If you care about code layout, how you name things etc. but don't want to waste time arguing about such things, then you probably want to go with the native language conventions
- C++ programmers, share your pain!
- "pragmatic" is hardly a quality traditionally associated
with heroism