Jump to content

skeldoy

Members
  • Posts

    4
  • Joined

  • Last visited

Reputation

20 Excellent

About skeldoy

Personal Information

  • Occupation
    DBA / Hacker
  • Location
    Høvik
  1. I agree. Self-thaught people are a royal pain. It doesn't work. They don't know enough about datatypes and other fundamental things. But I have yet to work with someone that does code and have a uni-background. So I think the vocational route works well there. Yeah. But *do* programming though,.. I would rather work with a thirteen year old girl that knows how to interface twitter with her GPIO than with a guy that knows how to waste time with UML. Complexity for me is when a piece of software tries to do too many things at once. Simplicity is a design where you have a thing that does metadata, a thing that does data, a thing that does control, a thing that does interfacing with users, a thing that does interfacing with machines. That's normally what we teach people to do when they are coding - but why do all of that yourself when we have a lot of good systems for doing that already? SQL, files, scripts, web, soap.. etc.. I know coding *and* scripting. The thing is though: I almost never need to do it. Most of the stuff I need to do have already been done before. Ten years ago that was not the case but today it is. I think coding is great. I love it. But I rarely use it. In fact I try to find stupid solutions to problems just to get the chance to code nowadays. Both are useful I agree - but I think that scripting is way more useful today. But then again. Things might change. Maybe we get some new device in the future that needs it..
  2. Why wouldn't you learn about polymorphism, inheritance or other programming techniques? I don't see how not teaching about their existence helps the situation. But seriously what would you rather want: A bunch of people that barely knows how to solve something in a very very very time consuming and overly complicated way that then have to learn how the real world works OR a bunch of people that can solve most any problem really fast and then choose whether they want to learn how to improve components of their solution. It's as easy as that really. Actually 70% of the worlds servers are unices. Last time I checked 90% of the worlds smartphones where unices. 99% of the worlds tablets are unices. And right now unix is on the most popular brand of computer in the US. The relatively small world of Windows is now getting even smaller. It's gaming-PC's left now and even they are moving to linux last time I checked. Most of the users want web-ui or maybe a native frontend to a web-thing anyway. Learning how to do SWING or visual studio-stuff just won't cut it anymore. Similarly I think that students poking around C to print to STDOUT is ridiculous compared to a 9 year old girl running a tweeting pot-plant on linux. People need to learn how to actually do stuff. We didn't learn anything relevant in uni: SOAP? No. XML? No. JSON? No. Perl? No. Obj-C? No. NoSQL/SQL? No. Automation? No. Java? Yes! SWING? Yes! Solving a stupid problem with N queens on a chessboard? Yes! Writing to stdout with C? Yes! But something I could use later? No. Glad I spent my weekends drinking beer and reading about Perl.
  3. The point of university is to learn how to think - not to learn how to code. Problem is that programming is "still new" in an academic sense so they focus on the tool instead of the solution. Coding is a vocation. It's still best learned in a vocational environment and I bet you a lot of money that the majority of people actually coding are people who are either self-thought or vocationally thought. Most people who do a programming course on university level never actually code ever again after that. And I know the reason for that: it makes no sense to still teach low-level stuff in this day and age. Sure ten years ago most systems would have to be built from scratch - but today; if you can't find software for it or do it with scripts you are either crazy or you have to learn how to code. But if you are that brilliant that you need to code a kernel or a protocol or something like that - you already know how to code. Your sort-example is actually brilliant. Sort-algorithms are mathematical problems - you just implement them using C because you want to squeeze as much as you can out from it. And maybe once in a while there is a need to do something like that - but how many people actually need to do something like that? How likely is that? Complexity? So when a new version of Python comes along - that's not complex? When a .NET-upgrade kills your whole design because of some security stuff that is not complex? Tried running 16-bit wintel applications lately? Tried running a 30 year old script on unix? Do you see? You are talking about complexity but you are looking at the wrong suspect. I never deal with any complexity - bc never changes - ls never changes - bash/perl never changes - the unices never changes. Tried maintaining 455 versions of an Android app lately? As for usability.. Don't really see that. Most stuff people do every day has scripts behind them. Writing a web-frontend is as simple and fast as it is easy. Writing a small GUI the same. Users know how files work and folders work. Users can actually handle a nice CLI-menu.. But most of the time I just automate all of it - the users never see it - people get less to do and we get more of their brain-time. Win-win!
  4. Well.. I work in a profession that is slowly being overtaken by software running on machines. If I got 10 cents for every time some salesperson pitched me a solution that "required" custom software written in some new object-oriented language I would be rich. If I got an additional 10 cents for all those problems that could be solved using "scripting language" running on a linux machine I would be doubly rich. The fact is that unless your doing something really really really groundbreaking - what you are trying to accomplish is probably just a new workflow on existing algorithms/tools: then you need a scripting language. But if you don't know scripting-languages and don't understand them you will see every problem as a ground-up problem. I would actually recommend teachers to do scripting languages as a primary. They are WAY more powerful than your average programming-language. Not only in terms of time to implement a rudimentary solution but in terms of stability. Bash is one of the best scripting-languages in the sense that it forces you to come to terms with what software is out there already, instead of trying to reinvent the wheel all the time. The filesystem is there - you won't reimplement a filesystem unless you really have to - so why would you reimplement reading or writing to a file? Makes absolutely no sense at all. You are killing the benefits of the fancy kernel if you do - and then guess what - you would be better of with a scripting language. There are so many hours wasted on trying to teach everybody the virtues of LISP and object-oriented perfection that we are loosing track of what matters: employers want to see results - end-users are crazy and time is very expensive. If you cannot do something in a scripting language you are basically trying to do something so novel that you need to get your head looked at or you are approaching it the wrong way or maybe your end-users are asking the wrong questions. I think that one of the major problems with accepting scripting languages as the most powerful languages is that we have grown accustomed to the thought that everybody is so special. Of course there will be people that excel in writing an algorithm for signal detection or people that love finding new ways to sort but those people are the exception. We are loosing a lot of people on the way - just trying to teach everybody to do everything but nothing at the same time. Using a scripting language like Perl you would write AI-laden SOAP-speaking twitter-bots in a couple of hours. Doing so in C would take hundreds of people or multiple years of nothing else. What I hated most with doing computer science at the university was that every single problem they would throw at me could be solved in less than ten seconds using perl one-liners. What a joke. We were thought to think slowly and solve problems in inadequate and ridiculous ways in the event of those rare cases where nobody had even ventured into that domain before. That's like creating esperanto and trying to teach your kid that before moving on to real languages afterwards. It's bad pedagogy.. That's probably why only a few people from every class actually end up doing programming - it's a waste of time. There will always be people who thrive in object-oriented perfection. Or people who dream in LISP. Great! But unless you are aware of what a scripting language can do for you: you will forever just be a moron .. Just think about the frameworks - frameworks in modern programming languages are basically scriptifying code. Why bother doing cell-tower triangulation in C when you can do a single line of objective-c CLLocationManager in some framework? Btw: Python is a scripting language. Java is a scripting language. We just perceive them as programming languages because of the syntax. But they have the flaws of scripting-languages and none of the benefits of lighter scripting languages. I bet you I could do most anything faster (in terms of execution time and implementation) with #!/bin/sh than you could with python or java. If you want to be real crazy you could always try coding a scripting language in an objective manner to slow you down and teach kids something about the stuff the drones do at the major companies.. But unless you do algorithms or something that needs to be fast: Scripting languages are basically the next best thing to pure C (or objective-C, C++, etc) out there.. Python is a waste of time. Java is a waste of time. Knowing what an integer is - ok - fine. Knowing what object-oriented code is - fine. But give me a bloke that knows regular expressions, scripting in bash/perl/... there is no limit to what that person could accomplish.. And I bet you the kids will be thrilled by doing twitter-bots the first day of the course instead of just printing shitty strings to stdout in a complicated manner. Printing to stdout is done by echo. Maths is done by bc. Protocols are done with curl/wget/netcat. Listing files: ls. Outputting files: cat. Removing them: rm. How hard to you want to make it? Well that depends on the students more then the teacher doesn't it? Doesn't it?
×
×
  • Create New...