Jim Meyer
05/24/2022, 9:01 AMJim Meyer
05/24/2022, 9:09 AMChris Knott
05/24/2022, 9:11 AMChris Knott
05/24/2022, 9:12 AMJim Meyer
05/24/2022, 9:13 AMChris Knott
05/24/2022, 9:15 AMJim Meyer
05/24/2022, 9:16 AMJim Meyer
05/24/2022, 9:16 AMwtaysom
05/24/2022, 3:35 PM@instance_variable = [an, array, of, things]
@instance_variable.map(&:whatever)
# ... later in the method ...
@instance_variable = nil
as potentially raising "NoMethodError: undefined method for nil:NilClass." Smart tool not so smart? Typing @instance_variable
based on all its uses ignoring control flow? Replace @instance_variable
with local_variable
no error. Why the difference? Thread safety! Would be nice if the tool explained as much, but there you have it. (Of course, no sane person uses threads in Ruby, or ever, but that's another conversation.)Jim Meyer
05/24/2022, 4:19 PMJim Meyer
05/24/2022, 4:34 PMwtaysom
05/25/2022, 2:58 AMJim Meyer
05/25/2022, 6:59 AMRiley Stewart
05/25/2022, 10:27 PMhttp://sp.cmc.msu.ru/courses/smalltalk/fabrik/figure3.gif▾
Fabrik began with an attempt to mix arbitrary layout and cell types in an object-oriented spreadsheet. The spreadsheet approach broke down with the complex expressions needed for synthetic graphics and other generative structures. The wiring approach addressed this problem and also opened the way for bidirectional constructions.You can definitely get the feeling of a "spreadsheet on wheels" from it. Brad Cox, the creator of Objective-C, really admires it as the highest stage of programming modularity, basically as a super-object level that is directly manipulable and visible.
Jim Meyer
05/26/2022, 9:05 AM