1. 09:39 22nd Sep 2008

    notes: 13

    reblogged from: inky

    tags: blog

    inky:

    marc:

    A software engineer that has first hand understanding of the vagaries of pointers, type casting, memory management (and fragmentation), and even OS internals (whatever the OS) will be better able to appropriately research and choose from PHP, perl, ROR, or even Ada. C (or some other suitably “dangerous” language) can facilitate learning these.

    BUT, what about the CS major that is focused on human-computer-interaction, math theory, or other research-oriented areas? Then whatever languages that compliment those goals are the “right” ones.

    marco:

    Learning C doesn’t just teach you syntax or a particular library. It teaches the fundamentals on which nearly all other languages are built. It’s as close as you can get to what the hardware actually does and still remain productive. […]

    You can get along just fine without knowing C and its concepts. But your skills and knowledge reach an entirely new level when you fully understand what the computer is really doing.

    I agree with Marco.

    Back in the day, when I was doing my undergrad CS degree, we were started on Smalltalk (Java was “out” but only the postgrads knew what it was). I think this was the department’s way of making us into object-oriented thinkers without having to make us struggle through the whole procedural to OO transition thing.

    In our second year we were taught, and had to use, Ada. Yes, really. As a friend of my says about Ada: Array slices! Ada is pretty cool. If I recall we were also compelled to learn a couple of functional languages too. I seriously sucked at functional programming.

    In our third year were were finally taught C, which we were compelled to use. Up until this point we had done data manipulation stuff in Smalltalk and Ada. In C, the big assignment was to rewrite malloc and calloc. I did well, but I barely understood it. I think we also had to learn assembler during third year. I was very bad at assembler.

    In my honours year I did not write code at all. This is why I am now a design researcher and not a programmer or software designer.

    My first job out of uni I was compelled to learn Java. Actually PwC flew me from Australia to Tampa, FL to learn Java with 40 other Australian grads. I am not a great programmer but I did not suck at Java. I was certainly in the top quartile of my cohort for PwC. After a while of not coding because of the tech crash, I was put on a project using SAP/ABAP. ABAP is basically FORTRAN, so it is easy once you’ve seen a few other languages.

    In fact, every language is easy, once you’ve used a few other languages (for given values of “easy”). And, I would say, every language is even easier once you’ve used C.

    Now I (still) write no code and I am glad. There are other people who get much more pleasure from writing code and are much better at it than I could ever be. This is OK, as I am pretty good awesome at some other things. But, quite a lot of what I do is mediated by technology, be it computers or other hardware. I like to think that one reason it is so easy for me to understand new technologies and devices and integrate them into the work I want to do is because I did CS as an undergrad which lets me see, just a little bit, the internal workings, which means it’s easier for me to see the metaphorical shape of what the software or device really does.

     
  2. 10:09

    notes: 5

    reblogged from: mills

    mills:

    Clayton Cubitt posted this photo of the Osler House by Marcio Kogan in Brazil’s capital, Brasilia. Notable for numerous outstanding buildings, Brasilia is also a fascinating example of a planned city: it was designed by Lucio Costa and Oscar Niemeyer in accordance with a modernist vision that has yielded both remarkable features and occasional disappointments in its actualization.

    A recent retrospective of Niemeyer’s work noted, for example, that the expansive concrete spaces around Supreme Court are like baking deserts in the heat of the sun; their aesthetic value is highly impractical given the climate. Pedestrian traffic is problematized, as it was little-regarded by some modernists.

    The Wikipedia article on Brasilia is fascinating; below, another view of Osler House:

    Modernist houses are cool, no doubt.

    The great problem with modernist cities like Brasilia, though, is that the structure and aesthetic and philosophy of modernism, of imposed order tends not to work at the city scale.

    James C. Scott’s book Seeing Like a State talks, in part, about Brasilia and other planned cities. A planned city tends to take shape from the top down. Here is the commercial zone; here is the heavy industrial area. But this tends to ignore the work that people do in making a city. Scott says:

    A village, city or language is the jointly created, partly unintended product of many, many hands. To the degree that authorities insist on replacing this ineffably complex web of activity with formal rules and regulations, they are certain to disrupt the web in ways which they cannot possibly foresee. (p256)

    And:

    It is possible, of course, to build a new city or a new village, but it will be a “thin” or “shallow” city, and its residents will have to begin (perhaps from known repertoires) to make it work in spite of the rules. (p256, again)

    After I read Seeing Like a State I wrote about Canberra, the Australian Federal Capital, which is a designed city with all the benefits and flaws therein:

    Having lived in Canberra, I think that the “rules” that are needed to live there are different to other cities, designed or otherwise. The rules are different because normal city rules don’t work and the rules built into Canberra don’t completely work. They’re a third type of rule. A rule that comes about to get around the rules that don’t work. To live in Canberra, you need to see it, not through the eyes of someone used to a “natural” city; you need to see it like a Canberran.