Author Topic: I am programming savvy.  (Read 2458 times)

IAmSerge

  • Temporal Warrior (+900)
  • *
  • Posts: 964
    • View Profile
Re: I am programming savvy.
« Reply #15 on: April 29, 2009, 03:43:08 am »
ive never really done assembly language but...

...depending, it should be easier or harder than what im used to...but not by much on either direction.

most everything is easy... everything that ive come upon... mostly...

I'm only in comp sci 1 in college... but... its lolable since my LARGE amount of past experience.

the hardest part was (and is) learning the syntax that Java uses. after that, twas simple.

anyways... ttyl

Ramsus

  • Entity
  • Chronopolitan (+300)
  • *
  • Posts: 313
    • View Profile
Re: I am programming savvy.
« Reply #16 on: April 29, 2009, 04:53:37 am »
There are much more difficult things out there than merely learning the syntax of a programming language, but you could live and work your entire life as a programmer and not have to deal with any of them. Because of that, most computer science programs cover just enough to make you a decent programmer -- not a good programmer and certainly not a great programmer. If things seem too easy, use it as an opportunity to find more difficult problems outside of class to tackle. Nothing is worse than having it easy for a few years, and then finding that things suddenly got tough because you stopped trying to improve a long time ago.

Also, make sure you learn how to use debuggers, profilers, and version control, so you don't waste time on poking around and guessing about why your program is slow or why a certain bug keeps appearing, or trying to rewrite something that you broke after spending 4 hours of work making changes based on a flawed new design that was meant to improve things. Your university classes probably won't teach you how to use those things either.

And learn how to read and write regular expressions. Nothing is more useful when it comes to matching and modifying textual patterns. Nothing is as concise either.

If you really feel you know Java though, you could write a simple IRC chat client as a Java applet as a way to exercise your knowledge and help solidify it. Internet Relay Chat is well documented as a protocol, and developing Awt and Swing GUIs within Java applets should require little more than reading a few concept tutorials and checking the reference documentation for the required API calls. I'm tempted to write my own for the site, but your contribution would be a great boon to making the Compendium chat service more accessible.
« Last Edit: April 29, 2009, 04:59:13 am by Ramsus »

IAmSerge

  • Temporal Warrior (+900)
  • *
  • Posts: 964
    • View Profile
Re: I am programming savvy.
« Reply #17 on: April 29, 2009, 04:57:09 am »
Quote
Also, make sure you learn how to use debuggers, profilers, and version control, so you don't waste time on poking around and guessing about why your program is slow or why a certain bug keeps appearing, or trying to rewrite something that you broke after spending 4 hours of work making changes based on a flawed new design that was meant to improve things.

haha, yep! sounds like me on occasion! =D

debuggers basically debug stuff for me? or make debugging easier (like a debug room?)?

profilers and version control I have no Idea on what youre referencing...

one of the things I haven't learned was how to "streamline" my code for faster running, however

Ramsus

  • Entity
  • Chronopolitan (+300)
  • *
  • Posts: 313
    • View Profile
Re: I am programming savvy.
« Reply #18 on: April 29, 2009, 05:09:06 am »
Debuggers let you set breakpoints in a running program so you can pause the execution and check what the current internal state is. In other words, you can pause your program and see what all the variables are set to, then change a few things and see what happens when you unpause. Debugging without a debugger usually means adding a lot of code that prints information about the internal state of the program while it's running, which then has to be removed (either conditionally by the preprocessor, or by hand) when the final version of the program (the production version) is ready to be built.

Profilers are programs that time everything in your code, so you can get back statistics on how long it took for each of your functions to run. That way, you can quickly see which functions run slowly, as well as how much certain aspects like the size of the input data is affecting your performance. From there, you can mathematically figure out the algorithmic complexity of the function and go back and try to optimize it with more efficient algorithms.

Version control keeps track of all the changes you make to your source code. It's like having infinite undo that keeps working after you've closed out your text editor. It also keeps track of who made what changes, and lets you save the reason why you made the change, making it a good way to keep track of how a program's development has progressed.

Also, code optimization these days isn't necessarily a process of just streamlining the code. If anything, it's more difficult than ever, since you have to understand how today's complex internal architectures work as well as how your compiler optimizes your code, so you can work around any deficiencies in both of them.

Basic optimization is still a matter of simply choosing or designing the best algorithm though, and that goes into analyzing algorithms for computational complexity (for example, anything with nested loops that increase in size based on the input data size is generally bad).When you get into writing searching and sorting algorithms, you'll get a good idea of what I mean.

Schala Zeal

  • Radical Dreamer (+2000)
  • *
  • Posts: 2148
  • 7th Elemental Innate, and vtuber
    • View Profile
Re: I am programming savvy.
« Reply #19 on: April 29, 2009, 05:29:33 am »
Well, as you progress, Java is... quite easy. Me, I've been into coding for so long that I find it insulting that the prerequisite in my college is Java for some 2 courses. For me, Java is like playing with a baby's toy. Where are my pointers? My memory management? Hello! ... I hate my college's curriculum. Hell, every time I go to class I fall asleep. It's reviewing stuff I've known over and over for 5 years.

I do pay attention to one thing though -- the Java API............I learn it for this course only but come summer I'm just going to flush all memory of it out of my head......again. Why learn something you'll never use after completing the class?

alfadorredux

  • Entity
  • Mystical Knight (+700)
  • *
  • Posts: 746
  • Just a purple cat
    • View Profile
Re: I am programming savvy.
« Reply #20 on: April 29, 2009, 08:49:02 am »
The pointers in Java are all over the place--why do you think they call it a NullPointerException?  It's just that they're carefully isolated in little glass boxes so that you can't touch them and screw things up.

(I actually like Java, but I can understand how it might seem confining to someone coming from the C/C++ world.  I tend to find that C/C++ are like catwalks with no guard rail--true, you can reach a little further over, but you can also very easily fall off--and prefer to spend my debugging time on something a little more substantial in terms of program functionality than screwed-up pointer arithmetic.  ::Shrug:: )

Ramsus

  • Entity
  • Chronopolitan (+300)
  • *
  • Posts: 313
    • View Profile
Re: I am programming savvy.
« Reply #21 on: April 29, 2009, 08:55:18 am »
http://www.chronocompendium.com/Forums/index.php/topic,7275.msg156726.html#msg156726

Well, as you progress, Java is... quite easy. Me, I've been into coding for so long that I find it insulting that the prerequisite in my college is Java for some 2 courses. For me, Java is like playing with a baby's toy. Where are my pointers? My memory management? Hello! ... I hate my college's curriculum. Hell, every time I go to class I fall asleep. It's reviewing stuff I've known over and over for 5 years.

I do pay attention to one thing though -- the Java API............I learn it for this course only but come summer I'm just going to flush all memory of it out of my head......again. Why learn something you'll never use after completing the class?

Unless you're doing system, high performance, or embedded programming, you don't need real pointers or the ability to manage your own memory. You really don't need a lot of things, in fact.

Also, those tedius, low-level aspects of C++ don't make it any more powerful. Power comes from the ability to build abstractions and remove patterns, not tediously having to manage all the low-level mechanics of what you're doing in order to gain a little performance. In other words, if you want power, try writing your own language semantics using Lisp macros.

Don't confuse control with power. There's a lot less you can do with a language that let's you control the low-level machinery of the computer than you can do with a language that let's you construct powerful abstractions easily and quickly.

Control is simply what you need when you want to do more with less. Power is purely what you need when you have to do more.

The pointers in Java are all over the place--why do you think they call it a NullPointerException?  It's just that they're carefully isolated in little glass boxes so that you can't touch them and screw things up.

(I actually like Java, but I can understand how it might seem confining to someone coming from the C/C++ world.  I tend to find that C/C++ are like catwalks with no guard rail--true, you can reach a little further over, but you can also very easily fall off--and prefer to spend my debugging time on something a little more substantial in terms of program functionality than screwed-up pointer arithmetic.  ::Shrug:: )

Pointers are actual memory locations stored in a variable, with no abstraction whatsoever. Except for the unboxed types, Java variables are all abstract references to objects. The only similarity is that they allow for the same types of data structures and function calls, but beyond that, they're completely different beasts.

I also wouldn't casually group C and C++ so close together.
« Last Edit: April 29, 2009, 09:25:38 am by Ramsus »

alfadorredux

  • Entity
  • Mystical Knight (+700)
  • *
  • Posts: 746
  • Just a purple cat
    • View Profile
Re: I am programming savvy.
« Reply #22 on: April 29, 2009, 09:24:42 am »
Since I've seen language wars in other venues and know exactly how useful such conversations are likely to be, I'm merely going to state that my previous remark was not intended to be either terribly serious or 100% technically accurate in terms of things like distinguishing between pointers and references, and then drop the subject.

Ramsus

  • Entity
  • Chronopolitan (+300)
  • *
  • Posts: 313
    • View Profile
Re: I am programming savvy.
« Reply #23 on: April 29, 2009, 09:43:28 am »
Since I've seen language wars in other venues and know exactly how useful such conversations are likely to be, I'm merely going to state that my previous remark was not intended to be either terribly serious or 100% technically accurate in terms of things like distinguishing between pointers and references, and then drop the subject.

I'm just making sure you understand the technical difference. A lot of people don't even know how to use pointers for low-level programming, because all they've ever done is use them as references. To think that that's all they're used for is a giant misconception these days, and helps keep people away from learning some foundational low-level aspects of software development by helping convince them that there's nothing to new to learn by doing so.

Also, isn't it useful to try and enlighten someone out of their language snobbery? This won't turn into a language war because I'm not trying to convert anyone to any other languages -- I'm simply trying to break them out of their closed-minded ignorance.

That is, I don't think anyone should be offended that they have to learn or use any language (except maybe joke languages like LOLcode and brainfuck). It's one thing to not like using Java out of personal preference or a certain weakness in an area that's important to you, but it's another to think that it's somehow just a toy language and that your langauge is somehow more "real". If I had to use BASIC for a class, and it allowed the concepts taught to be demonstrated, I wouldn't see any reason to gripe about it.

And I think you agree, which is why you responded to this thread to begin with.


« Last Edit: April 29, 2009, 09:47:05 am by Ramsus »

alfadorredux

  • Entity
  • Mystical Knight (+700)
  • *
  • Posts: 746
  • Just a purple cat
    • View Profile
Re: I am programming savvy.
« Reply #24 on: April 29, 2009, 10:24:20 am »
Truth be told, I haven't used pointers as anything except references since finishing up my MSc ten years ago, so the information was buried at the end of a couple of rather rusty synapses  :)  (especially since I dropped out of the programming field almost completely four years ago, when my last job went kaput).

I guess I've gotten a little cynical lately, or maybe a little nervous--I've been watching another venue that I used to frequent disintegrate under the weight of trolls, arguments, and a kind of conversational-style-culture-shock among the remaining regulars, and so I subconsciously expect any dispute to erupt into a flamewar.  Mea culpa.

I've also come to the conclusion that programming language snobbism is only very rarely curable.  This is possibly because almost every major language is superior to the others in some way (and inferior in at least one other), and people who are in love with a given language tend to paper over its faults.  These days, I'm not even sure that genuine ignorance is curable.  End result is, I do care, but I no longer have the energy left to seriously try to educate people, so the best I can manage is a few half-joking remarks.

Toy languages...man, that resurrects some very old memories.  Interestingly, Brainfuck, although it may be a joke, is not technically a toy language--some poor fool with too much time on his hands actually wrote a Brainfuck compiler in Brainfuck.  I expect that he must currently reside in a padded room somewhere, after having done that.   :lol:

By the way, thank you for reminding me--even if by accident--that I've been meaning to look into the current generation of profilers for Java.

Ramsus

  • Entity
  • Chronopolitan (+300)
  • *
  • Posts: 313
    • View Profile
Re: I am programming savvy.
« Reply #25 on: April 29, 2009, 11:42:59 am »
Most programmers have a highly personal, deeply emotional investment in their language of choice, and so it becomes a lot like their choice of religion. This is especially true of languages with a lot of difficult aspects to master (C++ for all its obscure, context-sensitive syntax rules, Lisp for its macros, Haskell for its purely functional style and, as a result, monads), which means the investment you put into learning the language becomes that much deeper and more personally intertwined with your own sense of ego and worth as a programmer.

As far as I'm concerned though, there's no perfect language for every situation, and that is the reason is that I learn languages out of curiosity and interest, or sometimes just for expediency and convenience, not to try and bolster my ego by mastering the "most powerful", "most flexible", or "most difficult" language out there and then using it for everything under the sun.

There are much more important things when it comes to programming than what features your programming language includes and what the syntax looks like.

I have to admit though, having a static language standard and stable, well-documented and relevant libraries and tools tends to be the deciding factor in deciding what language I'll use and for what.
« Last Edit: April 29, 2009, 05:59:50 pm by Ramsus »

alfadorredux

  • Entity
  • Mystical Knight (+700)
  • *
  • Posts: 746
  • Just a purple cat
    • View Profile
Re: I am programming savvy.
« Reply #26 on: April 29, 2009, 01:09:08 pm »
Ah, well, on some very distant lower level, all programming languages are equivalent to a Turing Machine anyway, IIRC. 

I do think that some of these people just need to be exposed to more languages before their preferences have a chance to fossilize, though.  Specializing before having had at least a glancing acquaintance with five or six different languages may be a mistake.

IAmSerge

  • Temporal Warrior (+900)
  • *
  • Posts: 964
    • View Profile
Re: I am programming savvy.
« Reply #27 on: April 29, 2009, 02:56:42 pm »
so all of this to say that I am no where near where I should be...?

oh, and Debuggers sound simple.  I think ive done something along those lines before.

And the whole profilers thing.. I've never actually had to worry about runtime and speed... usually.

when I said streamlining... I meant exactly what it means: making the program run its fastest and smoothing everything out.
I never said anything about it being easy.

Ramsus

  • Entity
  • Chronopolitan (+300)
  • *
  • Posts: 313
    • View Profile
Re: I am programming savvy.
« Reply #28 on: April 29, 2009, 06:12:39 pm »
Keep the curiosity, keep it fun, and keep a creative sense of problem solving, and you'll always be where you should be -- in a constant state of growth and learning.

Also, I wouldn't necessarily call optimization "streamlining," since a lot of times you may end up writing a lot more code and make things more complex in order to optimize things for speed, but I see that that's what you meant by it.

Schala Zeal

  • Radical Dreamer (+2000)
  • *
  • Posts: 2148
  • 7th Elemental Innate, and vtuber
    • View Profile
Re: I am programming savvy.
« Reply #29 on: April 29, 2009, 09:04:41 pm »
I actually use Free Pascal. True I used C++. I just think FP is friendlier. With C++ it has a bunch of compilers that like to care less about compatibility. #pragma this and dllexport() that......yuck.