Binx is right. If those functions could be called (generically, without specific reference to the "class") purely in context of the struct/object, without knowing the special names of the "methods," (window_init, &c) and simply with init(), then it would be approaching it.
But who cares? You can write OO assembly as well. Neither OO-C or asm accomodate it to the point where it's very useful.
Squeak Smalltalk also has the ability to work with Flash. You can even play flash animations within the Smalltalk environment. See link below.
If CIS is what you want...
on
CS vs CIS
·
· Score: 2
...then go with it. I'm double majoring in Information Systems and Technology (equivalent with CIS, but seems there's less business) and Biology. I had no problem finding a very nice internship after my freshman year (making $14/hr fulltime and a nice appartment paid for) doing what I wanted to to. At the same time, my friends in CS didn't get a real (decent pay to code) internship until sophmore or junior years, and were stuck doing tech support and really lame sysadmin stuff for a summer or two.
I'm not saying that it's simply because I'm in IS&T, rather that it doesn't matter all that much. If you can rationalize being in the CIS program to yourself, you should be able rationalize to your potential employer why you're in/completed that program. If you can show how it is something valuable, who cares if you've taken DifEq or another 3 semesters of Calc?
To clarify: At my school, IS&T is very similar to CS (same department), but less math, and a little more breathing room for what to take. There are some pretty easy classes that are required, but when it gets into the electives, I can choose whether or not to take the advanced CS classes, whereas in CS it's much more ridged.
Aaah! Citadel, how I love thee! WWIV- lame. Renegade and Cheeze- chock full of warez kiddies. Wildcat- even lamer. The only worth while boards were the Citadel systems, the only ones, IMO, which fostered conversation, rather than just files. The memories...
Then there was The HUB- with such door game gems as PimpWars... Forget TradeWars and L.O.R.D.- all any board really needed was PimpWars.
Aaron
(rev. bud green/rev. orgy-na/aaron the anarchist/rev. aaron)
By the same token, it might be cheaper in the long run to train your developers in on a better language, to enable them to develop software for even faster. You'd still have to upgrade your harware, but you'd most likely save money over both C++ and Java. I am, of course, talking about Smalltalk...
Code crunching BigNums is very frustrating to write without operator overloading.
You're kidding- Java doesn't have operator overloading? I never programmed much in Java (ran through a tutorial or two), but I suppose I assumed it did. Ouch.
Then there's Smalltalk, where there's no need for operator overloading, because "operators," as you know them in C/C++ do not exist (well, the assign operator ":=" I suppose does), you simply define methods with names like -, *, and %. Your example of "s = (k - x*r) % q;" would be very easy to do, whether it be with integers (big, small, positive, negative, doesn't matter) or floating point numbers. Perhaps you should give it a look.
What distinguishes it is that it adds a lot of features that make it suitable for mainstream and "industrial strength" use, and that's why it has succeeded where Smalltalk and Lisp haven't.
The Smalltalk environments are as "industrial strength" or more so than Java. (by "environments," I don't mean IDE, but the entire system) Smalltalk does server-side, RTOS, you name it. The only thing that distinguishes it from Smalltalk and LISP is poor syntax (that C/C++ kiddies can read) and "industrial strength" marketing from Sun.
Second, I've never found much use in one. Give me a good text editor (read vim), a build system, CVS, and a command line. An IDE is just something pretty that makes the average programmer feel better about themselves.
You've obviously never used a good IDE. A good IDE actually helps one code. I've not looked long and hard, but I've not seen a worthwhile IDE for C/C++ (although ddd is nice to have). They're all just thin wrappers around a compiler and gdb.
However, in almost every Smalltalk environment I've used, I've found a great IDE that actually helps me do my work better and faster. Exceptions being GNU Smalltalk and Tim Budd's Little Smalltalk.
In the past, IDEs have been very useful for rapid development. They allowed you to visually represent something and out pops 1000 lines of code to build that pretty window you drew. Because of the structure of Java, really object-oriented not just kind of like C++, rapid development is inherent. You subclass a window type that is pretty close (something for the Java API or your own class), spend a few lines tweaking it, and show it.
...and where wouldn't an IDE help out? If anything else, an IDE (ala Smalltalk) provides:
an Inspector (or even better, an ObjectExplorer like in Squeak): Look at the values of your objects, poke around. Far more powerful and useful than printf and assert statements littered throughout your code.
a Code Browser: Look at your code method by method, class by class, not in a huge flat file. IMHO, allows for a lot better focus on the method at hand. Also, have you ever refactored your code? Ever have to rename a class, push a method up or down (into the super- or a subclass), or modify your design? If not, you're probably just coding a cheap hack rather than a real piece of software.
and a Debugger: fairly self-explanatory.
If the only IDEs you've ever used do naught else but gen code from a spec or from a painting of the UI, you've never used an IDE. Not a complete one anyway.
What IDEs provide is another way to grok your code, to find bugs. The result? Better software (in function and design) and fewer bugs.
You mention IBM's VisualAge for Java being the only non-pathetic IDE for Java out there.
I've had a lot of experience with many Java IDE's (a little bit with a lot of different ones), but I concur. It's also worth mentioning that IBM's VA/Java was written in Smalltalk. IBM decided that Java wasn't a robust enough language to write a reflective, interactive environment in. In all fairness, I've heard that VA/J 3.0 has parts rewritten in Java.
If your definition of easy is PHP and perl, then yes, C is more or less easy. I can't talk about PHP, but I would say that perl isn't very easy. Perl is easy to program in if you already know it, but the complex syntax makes it a pain.
C isn't easy for two very important reasons: pointers and manual memory allocation/deallocation.
That's where I've always thought Java was slow- with GUIs. Not a little "Hello World" or currency converter app, but in actual applications, Java is slow as molasses, IMHO. Java is pretty fast for straight numbers, but it seems to drop the ball for real world apps. Which is not surprising- Java wasn't meant to scale so high.
There are a lot of other options (that aren't so slow) for cross-platform apps, including GUIs. Some are more cross-platform than others.
Speaking of GUI api, have you ever heard of OpenStep, er, rather YellowBox, I mean Cocoa?
Rather, you mean that PC laptops "have never been upgradable (save for memory/HD." PowerBooks (not all models, naturally) have been quite upgradable- with some you can upgrade processors and video chipset. One model of 68k powerbook you could upgrade to a zippy (at the time) PPC proc. Also, I believe with newer PowerBooks you can get a PCI breakout box.
Most of the apps on your desktop would be useless on your palm-top, especially those that are currently available. Sure, when you get a 640x480 palmtop it might approach usable, but you still have the problem of input.
I suppose it'd this kind of thirst which WinCE aims to quench...
Certainly the most time lost in programming is debugging. (well, maybe not by the programmers of certain software companies who seem to do no debugging at all...) And debugging *demands* a console. What is simpler, 'printf("got to xyz, variable xpto has value %d\n", xpto)', or setting breakpoints, opening variable display windows, scrolling to the variable you want, etc, in a debugger? I seldom use debuggers at all, the printf way is so much better.
My condolenses. Y ou're probably used to crappy C++ debuggers, and simply are ignorant of anything better.
No, debugging doesn't require a console. I don't doubt that gdb and other very primitive debuggers do. (I've only used gdb in the C world) In Smalltalk, even Squeak, with a relatively primitive debugger (at least compared to IBM's VisualAge Smalltalk) it light years ahead of the trash you C++ coders have to deal with.
Smalltalk much more closely resembles LISP from a standpoint of philosophy.
Python has pretty crappy lambda support, and I wouldn't call it anywhere near the quality of LISP's lambda. I do like Python, but it certainly isn't LISP with a traditional syntax.
I appreciate Black Parrot's and your sanity and support. Until more people understand this, and get it out of their heads that we are somehow above, aside, or seperate from nature, we'll continue leading ourselves toward the same fate as those species we've helped destroy. The longer we deny it, the closer we'll be to extintion.
I refuse to believe that in the few thousand years since humans started being "civilized" that we have caused more animal species to become extinct than in the few million years before that. Unless species are becoming extinct at several thousand times the previous rates of extinctions, this is pretty much impossible. Are you trying to say that we are in the middle of a period of mass extinction that even dwarfs the period in which the dinosaurs were wiped out?
I'm not saying that humans have caused more extintions than those that happened by themselves over the millions of years life has existed on this planet. In fact, most (I cannot recall the stat- 99+%?) of new species go extinct, natural selection and all.
What I'm saying is that our civilization has caused more thna our fare share of extintions. Do you argue that fact? A particular species relies on it's habitat, and when that's taken away, it tends not to be able ot survive without it. Habitat is a term that does not only encompass the structural surroundings, but also all of the plants, animals, geological formations, microscopic life, &c.
It's fairly simple- when the ecosystem that a species has coevolved with, in and around is changed abruptly or destroyed, the species may or may not be able to adapt to those changes. When it cannot, it often goes extinct. This change can be natural (meteors, earthquakes, floods, and so on), or unnatural. Examples of unnatural change is the tearing down of a forest or prarie for laying down pavement, creating a farm, or growing grass for cows to graze. I admit, I do not like the term "unnatural," as humans are as "natural" as can be, but surely you get my point.
The nicest thing I can say about smalltalk is: "at least it isn't BASIC or PERL"
Then there's a good chance you've never actually used it, outside of some poorly-taught OO design class.
I'm not saying we should let the sick die (as in, endangered), but was not thinking in a "how would these species help us?" sort of sense you have. Sure, they may look good in zoos, or provide some insight into our own bodies and medicine. I was thinking more in an ecological sense, where introducing species into non-native environments tends to be a bad thing.
Haven't you ever wanted a second chance after you made an idiotic mistake? This is one way of mankind making good on incredible errors after the fact.
True, mountain gorilla may be on its way out now, but that doesn't mean we won't have a collective change of heart 50 years after they're all gone.
Of course I have, who hasn't. But in 50 years, there's a good change that the environment of the cloned species will have changed so much that it is not accounted for in the cycle of things. Also, lab raised animals tend not to learn survival skills from their parents, like they would've in the wild. There's a good change reintroduction would be a flop.
As I said in another reply, I did not think about the fact that we maybe able to disect these critters toward creating new medicines or zoo-things for ourselves.
The reason (most) of these species are extinct is a loss of habitat caused by "civilization" moving in and changing it, whether to take resources or to build houses or businesses. In most cases of extintions caused by such a situation, the native habitat of these plants and animals are still in the state they're in when the species went extinct.
So, what am I trying to say? With no habitat to go back to, to repopulate, what's the point of bringing them back? Just to say we can do it? Putting them in a non-native habit will simply change that environment, possibly bringing other species to extintion. Put them in a reserve or zoo? Completely artificial- they would be serving the purpose for which they evolved, so why bother?
Want an aquatic robot? Check out the MicroSeeker. It's not commercially available, but it seems like it will be someday. What makes this robot interesting is that it runs Smalltalk, as opposed to a crappier language like the variants of C and BASIC most robos run. There's PIC/Smalltalk for the motor control, a Handspring Visor running PocketSmalltalk for high-level control, and the simulator is written in Squeak. A veritable cornacopia of Robotics and Smalltalk.
Binx is right. If those functions could be called (generically, without specific reference to the "class") purely in context of the struct/object, without knowing the special names of the "methods," (window_init, &c) and simply with init(), then it would be approaching it.
But who cares? You can write OO assembly as well. Neither OO-C or asm accomodate it to the point where it's very useful.
Squeak Smalltalk also has the ability to work with Flash. You can even play flash animations within the Smalltalk environment. See link below.
...then go with it. I'm double majoring in Information Systems and Technology (equivalent with CIS, but seems there's less business) and Biology. I had no problem finding a very nice internship after my freshman year (making $14/hr fulltime and a nice appartment paid for) doing what I wanted to to. At the same time, my friends in CS didn't get a real (decent pay to code) internship until sophmore or junior years, and were stuck doing tech support and really lame sysadmin stuff for a summer or two.
I'm not saying that it's simply because I'm in IS&T, rather that it doesn't matter all that much. If you can rationalize being in the CIS program to yourself, you should be able rationalize to your potential employer why you're in/completed that program. If you can show how it is something valuable, who cares if you've taken DifEq or another 3 semesters of Calc?
To clarify: At my school, IS&T is very similar to CS (same department), but less math, and a little more breathing room for what to take. There are some pretty easy classes that are required, but when it gets into the electives, I can choose whether or not to take the advanced CS classes, whereas in CS it's much more ridged.
Aaah! Citadel, how I love thee! WWIV- lame. Renegade and Cheeze- chock full of warez kiddies. Wildcat- even lamer. The only worth while boards were the Citadel systems, the only ones, IMO, which fostered conversation, rather than just files. The memories...
Then there was The HUB- with such door game gems as PimpWars... Forget TradeWars and L.O.R.D.- all any board really needed was PimpWars.
Aaron
(rev. bud green/rev. orgy-na/aaron the anarchist/rev. aaron)
By the same token, it might be cheaper in the long run to train your developers in on a better language, to enable them to develop software for even faster. You'd still have to upgrade your harware, but you'd most likely save money over both C++ and Java. I am, of course, talking about Smalltalk...
Code crunching BigNums is very frustrating to write without operator overloading.
You're kidding- Java doesn't have operator overloading? I never programmed much in Java (ran through a tutorial or two), but I suppose I assumed it did. Ouch.
Then there's Smalltalk, where there's no need for operator overloading, because "operators," as you know them in C/C++ do not exist (well, the assign operator ":=" I suppose does), you simply define methods with names like -, *, and %. Your example of "s = (k - x*r) % q;" would be very easy to do, whether it be with integers (big, small, positive, negative, doesn't matter) or floating point numbers. Perhaps you should give it a look.
What distinguishes it is that it adds a lot of features that make it suitable for mainstream and "industrial strength" use, and that's why it has succeeded where Smalltalk and Lisp haven't.
The Smalltalk environments are as "industrial strength" or more so than Java. (by "environments," I don't mean IDE, but the entire system) Smalltalk does server-side, RTOS, you name it. The only thing that distinguishes it from Smalltalk and LISP is poor syntax (that C/C++ kiddies can read) and "industrial strength" marketing from Sun.
Second, I've never found much use in one. Give me a good text editor (read vim), a build system, CVS, and a command line. An IDE is just something pretty that makes the average programmer feel better about themselves.
...and where wouldn't an IDE help out? If anything else, an IDE (ala Smalltalk) provides:
You've obviously never used a good IDE. A good IDE actually helps one code. I've not looked long and hard, but I've not seen a worthwhile IDE for C/C++ (although ddd is nice to have). They're all just thin wrappers around a compiler and gdb.
However, in almost every Smalltalk environment I've used, I've found a great IDE that actually helps me do my work better and faster. Exceptions being GNU Smalltalk and Tim Budd's Little Smalltalk.
In the past, IDEs have been very useful for rapid development. They allowed you to visually represent something and out pops 1000 lines of code to build that pretty window you drew. Because of the structure of Java, really object-oriented not just kind of like C++, rapid development is inherent. You subclass a window type that is pretty close (something for the Java API or your own class), spend a few lines tweaking it, and show it.
an Inspector (or even better, an ObjectExplorer like in Squeak): Look at the values of your objects, poke around. Far more powerful and useful than printf and assert statements littered throughout your code.
a Code Browser: Look at your code method by method, class by class, not in a huge flat file. IMHO, allows for a lot better focus on the method at hand. Also, have you ever refactored your code? Ever have to rename a class, push a method up or down (into the super- or a subclass), or modify your design? If not, you're probably just coding a cheap hack rather than a real piece of software.
and a Debugger: fairly self-explanatory.
If the only IDEs you've ever used do naught else but gen code from a spec or from a painting of the UI, you've never used an IDE. Not a complete one anyway.
What IDEs provide is another way to grok your code, to find bugs. The result? Better software (in function and design) and fewer bugs.
Yes, I agree that IDEs make the difference.
You mention IBM's VisualAge for Java being the only non-pathetic IDE for Java out there.
I've had a lot of experience with many Java IDE's (a little bit with a lot of different ones), but I concur. It's also worth mentioning that IBM's VA/Java was written in Smalltalk. IBM decided that Java wasn't a robust enough language to write a reflective, interactive environment in. In all fairness, I've heard that VA/J 3.0 has parts rewritten in Java.
Heh. That's exactly the point.
If your definition of easy is PHP and perl, then yes, C is more or less easy. I can't talk about PHP, but I would say that perl isn't very easy. Perl is easy to program in if you already know it, but the complex syntax makes it a pain.
C isn't easy for two very important reasons: pointers and manual memory allocation/deallocation.
That's where I've always thought Java was slow- with GUIs. Not a little "Hello World" or currency converter app, but in actual applications, Java is slow as molasses, IMHO. Java is pretty fast for straight numbers, but it seems to drop the ball for real world apps. Which is not surprising- Java wasn't meant to scale so high.
There are a lot of other options (that aren't so slow) for cross-platform apps, including GUIs. Some are more cross-platform than others.
Speaking of GUI api, have you ever heard of OpenStep, er, rather YellowBox, I mean Cocoa?
C is as easy to program and will run at least 9 times faster.
I'm not really a fan of Java for a number of reasons, but I laughed when I read this. Especially the part about how C is as easy to program.
Put down the (crack) pipe, think before you talk.
Rather, you mean that PC laptops "have never been upgradable (save for memory/HD." PowerBooks (not all models, naturally) have been quite upgradable- with some you can upgrade processors and video chipset. One model of 68k powerbook you could upgrade to a zippy (at the time) PPC proc. Also, I believe with newer PowerBooks you can get a PCI breakout box.
Most of the apps on your desktop would be useless on your palm-top, especially those that are currently available. Sure, when you get a 640x480 palmtop it might approach usable, but you still have the problem of input.
I suppose it'd this kind of thirst which WinCE aims to quench...
Certainly the most time lost in programming is debugging. (well, maybe not by the programmers of certain software companies who seem to do no debugging at all...) And debugging *demands* a console. What is simpler, 'printf("got to xyz, variable xpto has value %d\n", xpto)', or setting breakpoints, opening variable display windows, scrolling to the variable you want, etc, in a debugger? I seldom use debuggers at all, the printf way is so much better.
My condolenses. Y ou're probably used to crappy C++ debuggers, and simply are ignorant of anything better.
No, debugging doesn't require a console. I don't doubt that gdb and other very primitive debuggers do. (I've only used gdb in the C world) In Smalltalk, even Squeak, with a relatively primitive debugger (at least compared to IBM's VisualAge Smalltalk) it light years ahead of the trash you C++ coders have to deal with.
Oh well, i suppose it comes with the job.
And I've always found Java, (worse) C and C++ *way* to constrictive. Who cares? Use what you like.
Smalltalk much more closely resembles LISP from a standpoint of philosophy.
Python has pretty crappy lambda support, and I wouldn't call it anywhere near the quality of LISP's lambda. I do like Python, but it certainly isn't LISP with a traditional syntax.
I agree. Even Smalltalk, a purely OO language, handles lambda better. It's also geared at a similar begining to program audience.
I appreciate Black Parrot's and your sanity and support. Until more people understand this, and get it out of their heads that we are somehow above, aside, or seperate from nature, we'll continue leading ourselves toward the same fate as those species we've helped destroy. The longer we deny it, the closer we'll be to extintion.
I refuse to believe that in the few thousand years since humans started being "civilized" that we have caused more animal species to become extinct than in the few million years before that. Unless species are becoming extinct at several thousand times the previous rates of extinctions, this is pretty much impossible. Are you trying to say that we are in the middle of a period of mass extinction that even dwarfs the period in which the dinosaurs were wiped out?
I'm not saying that humans have caused more extintions than those that happened by themselves over the millions of years life has existed on this planet. In fact, most (I cannot recall the stat- 99+%?) of new species go extinct, natural selection and all.
What I'm saying is that our civilization has caused more thna our fare share of extintions. Do you argue that fact? A particular species relies on it's habitat, and when that's taken away, it tends not to be able ot survive without it. Habitat is a term that does not only encompass the structural surroundings, but also all of the plants, animals, geological formations, microscopic life, &c.
It's fairly simple- when the ecosystem that a species has coevolved with, in and around is changed abruptly or destroyed, the species may or may not be able to adapt to those changes. When it cannot, it often goes extinct. This change can be natural (meteors, earthquakes, floods, and so on), or unnatural. Examples of unnatural change is the tearing down of a forest or prarie for laying down pavement, creating a farm, or growing grass for cows to graze. I admit, I do not like the term "unnatural," as humans are as "natural" as can be, but surely you get my point.
The nicest thing I can say about smalltalk is: "at least it isn't BASIC or PERL" Then there's a good chance you've never actually used it, outside of some poorly-taught OO design class.
I'm not saying we should let the sick die (as in, endangered), but was not thinking in a "how would these species help us?" sort of sense you have. Sure, they may look good in zoos, or provide some insight into our own bodies and medicine. I was thinking more in an ecological sense, where introducing species into non-native environments tends to be a bad thing.
Haven't you ever wanted a second chance after you made an idiotic mistake? This is one way of mankind making good on incredible errors after the fact.
True, mountain gorilla may be on its way out now, but that doesn't mean we won't have a collective change of heart 50 years after they're all gone.
Of course I have, who hasn't. But in 50 years, there's a good change that the environment of the cloned species will have changed so much that it is not accounted for in the cycle of things. Also, lab raised animals tend not to learn survival skills from their parents, like they would've in the wild. There's a good change reintroduction would be a flop.
As I said in another reply, I did not think about the fact that we maybe able to disect these critters toward creating new medicines or zoo-things for ourselves.
The reason (most) of these species are extinct is a loss of habitat caused by "civilization" moving in and changing it, whether to take resources or to build houses or businesses. In most cases of extintions caused by such a situation, the native habitat of these plants and animals are still in the state they're in when the species went extinct.
So, what am I trying to say? With no habitat to go back to, to repopulate, what's the point of bringing them back? Just to say we can do it? Putting them in a non-native habit will simply change that environment, possibly bringing other species to extintion. Put them in a reserve or zoo? Completely artificial- they would be serving the purpose for which they evolved, so why bother?
Want an aquatic robot? Check out the MicroSeeker. It's not commercially available, but it seems like it will be someday. What makes this robot interesting is that it runs Smalltalk, as opposed to a crappier language like the variants of C and BASIC most robos run. There's PIC/Smalltalk for the motor control, a Handspring Visor running PocketSmalltalk for high-level control, and the simulator is written in Squeak. A veritable cornacopia of Robotics and Smalltalk.