45 Matching Annotations
  1. Apr 2022
    1. There are a few HDL complexity factors that are defined in that paper: size nesting control flow information flow hierarchy locality regularity modularity coupling (of modules or instances) concurrency timing

      nesting and information flow can to coupled to 1) nesting of words in factor, ie how far removed a word is from the primitives that make up the system 2) how many shuffle words there are

  2. Dec 2021
    1. constraining the available operations makes it easier for humans to wrap their heads around what programs do. This is not a panacea, as anyone who has had to struggle with an overly complex regular expression can attest

      True!

    2. A language that resembles a Unix-style command line pipeline with a predetermined list of operators, for instance, can guarantee the resource usage of the individual operations it supplies—and thus of the entire program

      or a stack-based language with a stack depth of 1, which if I'm not mistaken is equivalent to the power of a FSM, since each command would be the state transitions, poping and pushing states from the stack.

  3. Nov 2021
    1. I've written tree traversals, sorts and parsers in such restricted languages - the result is always a lot of comments and at least one level of unnecessary indirection

      the parsers need to consider which type of grammar its parsing. however only unrestricted grammars actually need a turing machine?

  4. Sep 2021
    1. true && say("it is true") || say("it is not true")

      some languages, such as C and javascript have a ternary operator

      a > b ? "a is bigger" : "a is smaller";
      
    2. In programming languages, when we talk about syntactical differences, we are mainly talking about superficial differences in how a programming language structures itself

      this sentence could use some work

    1. GivensystemsAandB, we say thatA≤Bif, wheneverxis connected toyinA, thenxisconnected toyinB

      but in this example, there is no x connected to y in A. However the statement was conditional:

      if x is connected to y in A, then x is connected to y in B

    2. Alice’s connectivity observation will not be compositionalwith respect to the operation of system joining

      so now just because we are now joining new edges/sub-graphs to this graph, we will no longer be able to make statements of whether edge A is connected to edge B?

    3. the less structure ispreserved by our observation of a system, the more “surprises” occur when we observeits operations

      because we as humans expect the similarities to remain, but as the structure disappears, we can make incorrect assumptions, being side-blinded by the differences.

    1. Gaining access to consistent and accurate data streams—and applying statistical analysis to that data in an appropriate manner—is difficult.

      related to business analytics?

    2. in a Six Sigma approach, but the idea or change in question goes through rigorous analysis and data testing first

      how well can one predict the impact of an innovation beforehand, without beta-testing or introducing it into the market?

    3. reduces processing time, opportunities for errors, and overall costs

      removing waste, also reduces maintenance cost. Something Chuck Moore definitively mentioned more than once.

    4. caller moods

      for example lead to variations.

      One anecdote is doctors being more lax with prescriptions right after lunch, and more stringy right before lunch.

    5. An organization that completely adopts a Six Sigma methodology never stops improving

      what if you're working with a specification that is fixed? I suppose the implementation can be improved, and all the human processes surrounding the software as well...

    6. The value stream is the sequence of all items, events, and people required to produce an end result

      not just processes, but rather sources of value, such as resources & human capital

    7. Sometimes, organizations have to consider the expense of an improvement

      opportunity cost: we are losing this much, but to improve it would cost that much

    1. Another issue with inheritance is that subclasses must be defined in code, which means that program users cannot add new subclasses at runtime

      the underlying issue here is probably the tight coupling of data and code. users very rarely need to edit code, especially at runtime. On the other hand, users need to manipulate data all the time.

    2. Inheritance is contrasted with object composition, where one object contains another object (or objects of one class contain objects of another class); see composition over inheritance

      composition is a good idea

    3. Inheritance allows programmers to create classes that are built upon existing classes,[1] to specify a new implementation while maintaining the same behaviors

      why would you want several implementations of the same exact same behavior unless for optimization purposes? and even that should be left to compilers for the most part

    4. According to Allen Holub, the main problem with implementation inheritance is that it introduces unnecessary coupling

      true! do not add anymore complexity that is inherent in the problem-space

    1. Thus, an executable file can be compiled to either include or exclude any level of contract

      this is because they're essentially assertions, not dependent types (which would be just type-checked at compile time)

    2. all Eiffel attributes are "protected", and "setters" are needed for client objects to modify values. An upshot of this is that "setters" can, and normally do, implement the invariants

      enforce the invariants

    3. Eiffel's control structures are strict in enforcing structured programming: every block has exactly one entry and exactly one exit

      really good for decreasing cyclomatic complexity

    4. Eiffel has five basic executable instructions: assignment, object creation, routine call, condition, and iteration
      x = Object.new()
      

      and if-else + loops

    5. In contrast to most curly bracket programming languages, Eiffel makes a clear distinction between expressions and instructions

      expressions and statements?

    6. Inheritance, including multiple inheritance, renaming, redefinition, "select", non-conforming inheritance, and other mechanisms intended to make inheritance safe.

      sounds complicated