quasi random (kaolinfire) wrote,
quasi random
kaolinfire

over. whelmed.

I was rambling in my thoughts on my way home from work today, not quite into the book I'm reading (I hate one of the main characters, and dislike the other two), but it's rare hard science and has to be appreciated for that, at least--I was thinking about my misbegotten attempt to teach java (aka computer science) at a local highschool many years ago. I'd really like another go at it. [[which reminds me of emails I'm ignoring and need to answer, I'm three thousand deep now--many of them of significant social importance at the very least, though by now many can be deleted as ignorable--but none of that is spam, and all of it is stuff I meant to attend to at the time, or even in my wisdom meant to attend to at some later time, which is still probably long past. sigh?]] But I'd really like another go at it. And then I thought about the book on java I started writing back in ... 2k, or maybe even '99. And then I started ranting in my mind about things I wanted to say and remember, and knew as they were happening that I was losing them--and I wanted to get home sooner to write them down and say something interesting that perhaps could start some intelligent discourse, which would then brighten my day. intelligent discourse that I don't feel too tired or stupid to participate in never fails to brighten my day.

the (less than intelligent) ramblings I have left, after returning home, checking email, catching up on LJ ((I told myself I would write first, and do these later, and ... well, such is the price, same as telling myself I'll write a dream down "later")).

    A problem with introduction to computer science is that students don't have a clue what they're being introduced to, and often--they're not introduced to it at all; they're led blind to its curves and told to feel it, to ponder it as it squishes under their fingers. Then, still blind, they're told to take the goo and make little structures out of it--a small pot, a vase, a mug.

    They have no clue what any of this means or why they're doing it. They don't know if their creation is ugly or bad, and it's insubstantial so even a proud parent can't look at it and treasure it for them.

    And that's _not_ computer science. What they're learning, or what they would be learning if they understood it, is software development--a trade, not a science. It is a good trade, and the trade must be understood to a large degree before any science can be put into practice... and as for science without practice, you'll just have to watch two mathematicians argue 'pure' math versus 'applied' math. It's an interesting sight, and different every time.

    Software development is two things, mainly, interwoven--it is creation, and integration. Creation can be for its own sake, for the sake of learning how to create, or for the sake of learning with the creation. Integration is communication. A project will be bits of both. In the idealized class room, you're almost only ever dealt the creation task--you're given simple projects that you can start and finish, and handed (or pointed to) a single api to use. In 'real' software development, you often have to integrate across many boundaries, some of which are more ready to be integrated than others.

    Some boundaries give you a human-like api, where you simply write to it in a manner that makes sense, and it works--remote procedure calls, or just libraries of procedures created by a third party, in the language you yourself are using.

    Then there are libraries written in common languages that you are not using, and you have to figure out how to wrap those libraries, or hook yourself into them; or decide that you can't, and move to something more compatible, or write what you need from more primitive parts.

    Then there's the embedded systems, essentially, where you embed another language inside your own code; it's simple enough, if potentially confusing, and often other people have already made wrappers (likely dozens of competing ones that are confusing in their clamor to be the one true wrapper).

    Next is the holy data massage, the translation from what one system likes to another, which can be as simple as flipping bits around, or padding columns of data, as hackish as attempting babel conversions, or as obstruse as doing multiple lookups, or even requiring (_gasp_) human intervention.

    This is what software development is. Once you can do these things in a span that keeps the attention of a human being, then you can move on to the science of it.

    Computer science is essentially applied math. It's knowing your time and memory constraints, and devising (or picking out of a cookbook) what data structures are optimal to your task at hand, what methods will return a good enough answer fastest. Computer science is tightly intertwined with software architecture, but tends to be more theoretical still. Software architecture takes these data structures and abstract methods, and (optionally) software development paradigms, and rolls them into something that is good, and can be made better without having to demolish the entire building. A proper software architect can design any building, and design it to last lifetimes, to grow and replace itself entirely, without ever 'from scratch' being a quicker way of moving forward.



And that's all I have to say for now. Any questions? Comments? I'm sure I say some mistruths in there, I know I meander, ... it's a rant, and one I hope to improve and to build on, perhaps to even evolve into, if not a book, a curriculum.

Though... shit, yeah. This then meandered into robotics--and where robotics comes into all this, and then from there where mechanics, and physics, and all that enter in. The robotics was going to take a look at merging two things--one is to extend computers into the real world, and the other is to extend mechanics into the digital world. There are reasons for both, of course, but those are (in my head) certain mindsets that people have, and when two people communicate with different mindsets and without the understanding of different mindsets, often no proper communication takes place.

more later, I hope. Posted the above rant to two groups I hope will have something interesting to say, which makes three including this livejournal. :)
Subscribe

  • GUD Issue 5--is ALIVE! :D

    What's not to love??? Issue 5 ... WRAPS A SCIENTIFIC CORE WITH OUR MOST ECLECTIC SELECTION TO DATE—including two "mini graphic novels", and a…

  • Preditors + Editors Readers' Poll

    Probably 9/10 of you have already either put your votes in or decided you're not interested, but this is my last-minute plea for the other two of…

  • I appear to have mentioned it everywhere but here?

    Pay what you want--a discussion, history, thoughts, ... It's a thing. It's been done a lot. Does anyone know a good list of who's down it and how…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments

  • GUD Issue 5--is ALIVE! :D

    What's not to love??? Issue 5 ... WRAPS A SCIENTIFIC CORE WITH OUR MOST ECLECTIC SELECTION TO DATE—including two "mini graphic novels", and a…

  • Preditors + Editors Readers' Poll

    Probably 9/10 of you have already either put your votes in or decided you're not interested, but this is my last-minute plea for the other two of…

  • I appear to have mentioned it everywhere but here?

    Pay what you want--a discussion, history, thoughts, ... It's a thing. It's been done a lot. Does anyone know a good list of who's down it and how…