ECE 2524

Introduction to Unix for Engineers

An analysis of the analyzer

Usage

  • The README contained everything I needed to easily use the program:

  • The program compiles/runs without errors:

  • The program worked as advertised:

Style

  • The code is cleaning divided into modules and multiple files:

  • Variable and function names are meaningful:

  • Comments are used where appropriate:

    while the function names are self-explanatory, docstrings would be useful to provide information about input/output arguments for each function

Philosophy

  • The program most closely follows the ed-like interface pattern:

    it would make sense to read text from standard input if some was provided, else go into interactive mode (e.g. like bc)

  • This choice of pattern is a good one for this application:

    based on my understanding of the purpose, I think a cat-like filter pattern would be more useful here. What is gained by the interactivity?

  • This program follows the Rule of Silence and Least Surprise:

    Given the implementation as a ed-like game the level of output makes sense.

  • This program follows the Rules of Modularity and Composition:

    Again, given the implementation as a game, but for what it does it would make sense to want to use in a pipeline, as is it wouldn't work very well interfacing with other programs.

  • This program follows the Rules of Representation and Simplicity:

    The three text files are hardcoded into the code. This increases complexity since if a user wanted to analyze their own file they would need to modify the code. A better solution would be to read a list of text files from the current directory and generate a menu dynamically.