• Home
  • About
    • About The Coder
    • Language List
  • The Rules
    • Rule #1: Clarity Trumps Everything
    • Rule #2: Source Code is for Humans
    • Rule #3: Don’t Ignore Warnings
    • Rule #4: Comment As You Go!
    • Rule #5: Always Use Parentheses
  • CS-101
  • Guestbook

The Hard-Core Coder

~ I just can't stop writing code!

The Hard-Core Coder

Category Archives: CS101

Iteration versus Recursion

19 Monday Dec 2016

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

computer language, computer languages, computer programming, computer science, GOTO statement, iteration, language design, loop statements, programming language, recursion

When it comes to what makes a computer (or any other) language a programming language, there are three characteristics usually required:

  1. Saving state (variables)
  2. Selecting a code path (if-then)
  3. Iteration or recursion (or equivalent)

This post is just a brief note (for a friend) about the third item and why it allows three distinct options.

Continue reading →

The Thing About Constants

16 Tuesday Aug 2016

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

constants, defined values, global constants, literal values, literals, named constants, named values, numerical constants, P.J. Plauger, string constants

Along with “always use less-than” is another great piece of always advice, except this one is a prohibition, a never rather than an always (same thing, really, from a programmer’s point of view).

It has to do with never having literal values embedded in your code!

Continue reading →

Counting From Zero

08 Monday Aug 2016

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

Edsger Dijkstra, EWD831, greater-than, indexing, integer ranges, less-than, zero, zero indexing

In his brief 1982 essay (EWD831), computer science giant Edsger Dijkstra examines a topic that (inappropriately, as it turns out) vexes some programmers: Why in the world do computer people count starting at zero? Everyone knows that counting starts at one!

As it turns out, there are two very good reasons for counting from zero!

Continue reading →

What is a “Programming” Language?

06 Saturday Aug 2016

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

computer language, computer languages, computer programming, computer science, language design, programming language, Turing complete

Back in the post HTML is not a programming language! I brought up the three properties required by a programming language. A discussion recently got me thinking about it again. This post is just some notes on those thoughts…

Continue reading →

State Engines, part 3

25 Wednesday Nov 2015

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

computer, computer code, computer programming, computer science, Python code, state engine, state table

In the first two parts of this series I’ve introduced state engines and taken apart a specific instance of an engine. Now it’s time to tie together the design idea with approaches to building a variety of such engines.

Because the programming logic is in the state table, the engine can be fairly generic. That means it’s possible to create a state engine framework you can reuse for a variety of applications.

Continue reading →

State Engines, part 2

11 Wednesday Nov 2015

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

computer, computer code, computer programming, computer science, Python code, state engine, state table

Last time I introduced state engines and state tables. I showed parts of a simple implementation of one in Python. It parsed the language introduced in Little Programming Languages. This post continues that, so be sure you’ve read that first article.

I got as far as the state table implementing the process, and that’s where this post picks up. I’ll also get into the SourceReader class that does the heavy lifting.

Continue reading →

State Engines, part 1

08 Sunday Nov 2015

Posted by Wyrd Smythe in CS101

≈ Leave a comment

Tags

computer, computer code, computer programming, computer science, state engine, state table

At one point in my career, the state engine (SE) was one of my favorite AWK hammers. At the time much of the work involved text processing or, in some cases, serial byte processing (which is not quite the same thing). That sort of thing is right in the wheelhouse for a state engine.

They are a very useful tool and an important part of any programmer’s toolkit.

Continue reading →

Rule #4: Comment As You Go!

05 Monday Oct 2015

Posted by Wyrd Smythe in CS101

≈ 6 Comments

Tags

computer code, computer programmers, computer programming, programming language, real programmers, software development

There is a common tendency, as we crank out code, to think that we’ll come back later and write some really good comments — comments that future reviewers will view with admiration for their clarity, completeness, and humor. But if we’re honest we have to admit: Later never comes. We never go back and write those great comments. Often we don’t write any comments at all other than some placeholder we might dash off at the time.

Which is why Rule #4: Comment As You Go!

Continue reading →

HTML is not a programming language!

22 Monday Dec 2014

Posted by Wyrd Smythe in CS101

≈ 4 Comments

Tags

computer code, computer language, computer languages, CSS, data, data type, HTML, Java, JavaScript, programming language, variables

A webpage is a text document written in HTML. This document may also contain CSS and/or JavaScript, but it’s basically an HTML text document. You could write one — including the CSS and JavaScript — using just a pencil and paper.

Despite not needing a computer to write, all three are computer languages — they are languages used by, understood by, computers (and trained humans). However only one of those (JavaScript) is a programming language.

This is a brief explanation of which is which and why.

Continue reading →

Getting to the Next Hill

23 Monday Jun 2014

Posted by Wyrd Smythe in CS101

≈ 1 Comment

Tags

computer programmers, computer programming, project estimation, project management, software design, software development

Last week I took my car in for scheduled service, and when I asked how long it might take, the guy said it was specified as one-and-a-half hours of labor. He could do that because there are thousands upon thousands of data points where a competent mechanic has performed that exact service, so there is a very clear idea how long it takes.

But ask a researcher how long it will take to find what they’re looking for, and the answer is usually, “I have no idea. I’ll know after I find it.” The path a researcher follows is usually new and unexplored, so it’s impossible to predict how long the path actually is.

Creating new software is much more like research than auto service, because it involves traveling unknown ground. Despite this, software development managers often act as if new development is predictable.

It often isn’t!

Continue reading →

← Older posts
Newer posts →
Follow The Hard-Core Coder on WordPress.com

The Posts

  • Brian Kernighan: Successful Language Design
  • My Python App Framework
  • Multiplication Visualized
  • Square Root of 2
  • Life With Class
  • John Conway’s Life
  • Python Decorators, part 2
  • Python Decorators, part 1
  • Function Currying
  • Rule #5: Always Use Parentheses

The Topics

  • Blog (4)
  • CS101 (28)
  • Fun (22)
  • Interesting (1)
  • Opinion (12)
  • Stories (12)
  • Uncategorized (1)

The Month

January 2021
M T W T F S S
 123
45678910
11121314151617
18192021222324
25262728293031
« Oct    

The Past

It’s me!

Wyrd Smythe

Wyrd Smythe

The canonical fool on the hill watching the sunset and the rotation of the planet and thinking what he imagines are large thoughts.

View Full Profile →

The Main Blog

Visit Logos con carne

Lots of wyrds... with meat!

Posts

RSS Feed

Comments

RSS Feed

Enter your email address to follow The Hard-Core Coder and get email when there is a new post.

Blog at WordPress.com.