Hopefully sooner than later, from a business standpoint. It'd be great just before the holidays per the current schedule. I think Parallax needs a new significant product in the market to compete with R-Pi, Arduino Due, Tre, Beaglebone, etc.
I'm surprised that no recurring blog exists for the Propeller-2 recording the process with pictures. Or maybe a recurring article in Makezine or some other popular magazine. More Wozniak and Jobs needed here, and less Abbott and Costello. It would be a great educational piece unique to Parallax and raise awareness. And raise sales when the product comes out in December of 2014. Have you considered teaming with Arduino? A new Arduino board featuring a Propeller-2 programmable in C would be fantastic.
You mean something like "The Soul of a New Machine", the book that was written by Tracy Kidder about the experiences of the computer engineering team that designed the Data General Eclipse MV/8000, but as a blog?
We have had blow by blow details here continuously.
"If a tree falls in a forest and no one is around to hear it, does it make a sound?" My point is that although forums are great tools for seeking and finding help and news, they are very niche and therefore not good for broadcasting important news to the masses. To future customers. You need newspapers and magazines for this. Or in our modern times, blogs! At some level, Parallax is in the business of Education. Why not spin the prop-2 development process into an educational bit?
You mean something like "The Soul of a New Machine", the book that was written by Tracy Kidder about the experiences of the computer engineering team that designed the Data General Eclipse MV/8000, but as a blog?
Excellent analogy kwinn, except the propeller-2 blog would be non-fiction (I hope). With real people, real problems, real financial stakes!
My point is that all the trials and tribulations of Prop II development, the steps forward the set backs, the redesigns and so on and so on are not important news that need be broadcast to the world. In fact it's probably better to keep quite about most of it. Had you been following proceedings in the PII development forum for the passed few years you would not be speaking the way you are I'm sure.
"The Soul of a New Machine" was not a fictional story. It is an account of the development of a real computer by real people in a real company.
Remember that book was written, or at least published, after the machine was developed not during development. Most companies would not allow people to tell a story like that in real-time.
GENERAL NONFICTION (HARDCOVER)
WINNER:
Tracy Kidder, The Soul of a New Machine
FINALISTS:
Guy Davenport The Geography of the Imagination
James Fallows National Defense
Janet Malcolm Psychoanalysis: The Impossible Profession
Andrea Lee Russian Journal
My point is that all the trials and tribulations of Prop II development, the steps forward the set backs, the redesigns and so on and so on are not important news that need be broadcast to the world. In fact it's probably better to keep quite about most of it.
Yes, good point. It's a question of frequency and balance. So maybe this proposed blog would be updated once a month, and report positive news and some negative news. With negative news, you then explain how you'll solve the issue and move on; the negatives become opportunities. Pictures of the process and the people behind the scenes are very important too. This product needs a face.
Will the propeller-2 be ready in time for Christmas sales? 2014?
If you mean Finished silicon, delivered in time to allow someone to release products into the pre-Christmas sales - then no, highly unlikely. aka no chance.
If you mean FPGA builds you can run P2 software on, for development cycle starting, this side of Christmas, then yes, that is much more likely.
Initial FPGA code (COG) I'd estimate is likely sometime this month, given Chip's progress reports.
If you mean Finished silicon, delivered in time to allow someone to release products into the pre-Christmas sales - then no, highly unlikely. aka no chance.
If you mean FPGA builds you can run P2 software on, for development cycle starting, this side of Christmas, then yes, that is much more likely.
Fair enough. The progress is encouraging nonetheless.
What will be the main programming language, Spin or C?
I certainly hope Spin. It fits the propeller infinitely better and is much easier to use (not to mention get started with) than C.
Why did Parallax decide to put so much emphasis into C on the propeller? Is it to try to rescue arduino fans? That's the only real reason I can think of. It seems like they're mainly using it for education. Why would you teach someone a really hard language and then show them that it's better done with a much simpler language?
Why did Parallax decide to put so much emphasis into C on the propeller?
Seems you are very late to the party.
There was no emphasis on C for the Propeller when it was created or for a long time after.
In fact it was not until Bill Henning discovered how to execute Propeller native instructions from HUB RAM, with the help of a really tight fetch-execute loop in COG, that the idea of compiling C for the Propeller made any sense at all.
Even then it was some years before Parallax got behind the idea of C for the Propeller.
Never mind the Arduino "fans". The idea of supporting C on the Propeller is more about what customers want. Nobody knows or cares what Spin is.
Note: I'm not saying that Spin is not a wonderful thing. Personally I think Spin and the Propeller and the Prop Tool are an outstanding example of simple and elegant design that the world should pay attention to. In spirit if not in detail.
I certainly hope Spin. It fits the propeller infinitely better and is much easier to use (not to mention get started with) than C.
Why did Parallax decide to put so much emphasis into C on the propeller? Is it to try to rescue arduino fans? That's the only real reason I can think of. It seems like they're mainly using it for education. Why would you teach someone a really hard language and then show them that it's better done with a much simpler language?
Education customers were demanding C for years so finally Parallax gave them what they had been asking for.
I certainly hope Spin. It fits the propeller infinitely better and is much easier to use (not to mention get started with) than C.
Why did Parallax decide to put so much emphasis into C on the propeller? Is it to try to rescue arduino fans? That's the only real reason I can think of. It seems like they're mainly using it for education. Why would you teach someone a really hard language and then show them that it's better done with a much simpler language?
C is no harder than Spin. In fact, it might actually be easier if you can just get over the hump of using braces for block structure. Don't tell me that the C operators are hard to understand because Spin has far more obscure operators than C.
I certainly hope Spin. It fits the propeller infinitely better and is much easier to use (not to mention get started with) than C.
Why did Parallax decide to put so much emphasis into C on the propeller? Is it to try to rescue arduino fans? That's the only real reason I can think of. It seems like they're mainly using it for education. Why would you teach someone a really hard language and then show them that it's better done with a much simpler language?
Electrodude, you are always encouraged to ask us directly if you want to know. I'd love to dispel myths that we value C more than Spin, or whatever the viewpoint is that we may have contributed to.
The reason we developed C for education is simple. The educators want C. Everybody everywhere is telling them to program in C, from districts to states this is the directive. So we decided to give them what they want in a nicely packaged environment that leverages their prior experience with the BASIC Stamp.
When we first introduced Spin we had two problems. First, it was an entirely new language for them. Though the differences are small and manageable to most programmers, these differences can be big to a teacher who has no prior experience. BASIC can be picked up very quickly, and the Propeller has a slightly longer learning curve with Spin than C. At least I'd argue this to be the case - our C system lets you avoid certain setup with the system clock and using objects. All of the C libraries for education can be called at a top level with hardly any lower level fussing around. Second, our first delivery of Spin was done through the Propeller Education Kit, a really well-written set of projects that provide the best foundation, yet without something like the Propeller Activity Board or a robot kit.
You asked why we'd teach them a "hard language and then show them that it's better done with a much simpler language?"
It's a great question! And the answer is because many of them wouldn't look at Spin until they first saw something done with C. We've had more Spin interest in education since we released our C learning system than in the prior five years.
Spin and ASM are the predominant languages used in all Parallax commercial products.
Parallax's ongoing commitment to Spin is showing more these days...
And there will be another Spin-only hardware project released on Thursday or Friday.
When you're a small company, like us, a small shift of our development team makes it feel like the whole company has a single focus on the outside. Yet something as "simple" as our C program takes nearly everybody in the office to get it launched.
And there will be another Spin-only hardware project released on Thursday or Friday.
When you're a small company, like us, a small shift of our development team makes it feel like the whole company has a single focus on the outside. Yet something as "simple" as our C program takes nearly everybody in the office to get it launched.
Ken Gracey
Why is it necessary to have a "Spin-only hardware project" or a "C only hardware project"? Why can't each new piece of hardware be introduced with both Spin and C code to support it? I'll bet you could get volunteers from the forum to write the code for one of the languages if you only have in-house staff sufficient to support one language at a time.
Why is it necessary to have a "Spin-only hardware project" or a "C only hardware project"? Why can't each new piece of hardware be introduced with both Spin and C code to support it? I'll bet you could get volunteers from the forum to write the code for one of the languages if you only have in-house staff sufficient to support one language at a time.
OK, let me rephrase. I think your reply is a result of me not choosing my words very carefully.
The specific piece of hardware I'm referring to is being released only with Spin/ASM support. The language was chosen because it was much faster for the engineer who was doing the code development. However, I'd absolutely love to have the same code base ported to C! In fact, I asked the engineer if we could get both Spin and C, but he only had time for Spin since that's his primary expertise with the Propeller. I'll likely be sending you one of these systems so you can port it to C, if you are interested.
So, yes, the volunteers are very important in this regard for the reason you cited: we don't always have the resources internally.
OK, let me rephrase. I think your reply is a result of me not choosing my words very carefully.
The specific piece of hardware I'm referring to is being released only with Spin/ASM support. The language was chosen because it was much faster for the engineer who was doing the code development. However, I'd absolutely love to have the same code base ported to C! In fact, I asked the engineer if we could get both Spin and C, but he only had time for Spin since that's his primary expertise with the Propeller. I'll likely be sending you one of these systems so you can port it to C, if you are interested.
So, yes, the volunteers are very important in this regard for the reason you cited: we don't always have the resources internally.
C is no harder than Spin. In fact, it might actually be easier if you can just get over the hump of using braces for block structure. Don't tell me that the C operators are hard to understand because Spin has far more obscure operators than C.
I don't mind C's braces at all. And I will admit that Spin has many obscure operators. My main problem with C is how many stupid little mistakes there are to make - missing semicolons, mismatched prototypes, missing casts that would be obvious to any human, obscure link errors due to specifying things to link in the wrong order, extreme verbosity (but nothing compared to C++, which is 99% boilerplate code).
What I'm complaining about is how badly C fits the propeller. Spin fits the propeller almost perfectly, but C feels horrible on it.
What I'm complaining about is how badly C fits the propeller. Spin fits the propeller almost perfectly, but C feels horrible on it.
This is a statement that is often made but I don't really see it. I guess the main argument is that Spin and PASM can be mixed in the same source file. You can do that in C too but the syntax is rather ugly, I'll grant you that. Otherwise, I don't see Spin as being particularly tailored for the Propeller except that it has some built-in functions like cognew that invoke Propeller hardware features. Of course, any language for the Propeller will have similar features as does PropGCC.
Also, Spin has some not-so-obvious features that are easy to trip up on like the behavior of RES and the meaning of @ and @@ and @@@.
There are many things about C that people complain about but I never hear them complaining about it's verbosity. Although I suspect APL supporters could make a case for it:)
C is a lot less verbose than other common languages, Java, Pascal, Ada, Cobol, etc.
C is is positively cryptic by comparison.
Which languages are you comparing C to that leads you to say it's verbose?
The reason we developed C for education is simple. The educators want C. Everybody everywhere is telling them to program in C, from districts to states this is the directive. So we decided to give them what they want in a nicely packaged environment that leverages their prior experience with the BASIC Stamp.
Let's face it, C is the de-facto language for programming like "English" is to the world. Learning C benefits the student both in academia and the industry and improves the chance of finding a job. Python and Matlab are also important. Moreso, Arduino has proven that C can be learned by anyone willing to try, so Basic is just not necessary IMHO.
I program Arduino Due boards. Not propeller-1. But I don't consider myself an Arduino customer. I'm a customer of 32-bit mcu boards with built-in ADCs, hardware USART, etc., and programmable in C. And I have no problem transitioning to Propeller-2 when available.
An idea: Parallax is developing C for the Propeller-2. Why not team with Arduino and enhance the IDE to let users program the Propeller-2 in C, from the Arduino IDE? Keep Spin for current Parallax customers, and use the IDE to increase marketshare on the C side. I think the 32-bit multi-core processor and program examples showcasing advantages of multiple cores would be educational and a great addition to the Arduino portfolio.
There are many things about C that people complain about but I never hear them complaining about it's verbosity. Although I suspect APL supporters could make a case for it:)
C is a lot less verbose than other common languages, Java, Pascal, Ada, Cobol, etc.
C is is positively cryptic by comparison.
Which languages are you comparing C to that leads you to say it's verbose?
Do you have an example of said verbosity in C?
My guess is that this is a reference to the need to provide prototypes for functions that are being forward referenced or referenced from another file. Spin doesn't require this.
@Ken Gracey:
OK, thank you. I'm very happy this is the only reason why, and while I can't say I like the reason, I'm sure it's a good strategy.
@David Betz:
Yes, that's why. I should really just write a program to generate header files for me, however, and stop complaining. "Extreme verbosity" would have been better applied to C++. C is verbose but not extremely. Also, how is Java more verbose than C? At least you don't have partial declarations of everything in a zillion different places. In C++ you often need 3 partial declarations of the same class in 2 different files:
test.hpp:
class X; // declaration 1
class Y
{
public:
X* foo(Y* y);
};
class X // declaration 2
{
public:
int bar(Y* y);
Y* bar;
};
test.cpp:
#include "test.hpp"
Y* X::foo(X* x)
{
// blah blah blah
}
int X::foo(X* x) // and after 2 declarations we still haven't defined any methods!
{
// blah blah blah
}
EDIT:
@David Betz:
What's so hard about res? I've seen people have problems with it, but it was all because they didn't read the manual. @ does annoy me but I think I think I've almost found the reason for it.
At least you don't have partial declarations of everything in a zillion different places.[/QUOTE]
You should never have declarations in "a zillion different places". They should be in exactly two places, one in the source code where the function is defined and one in a header file for users of the function or library.
True header files can seem to be redundant verbiage.
However those function signatures and class declarations are out of the way in their own files and don't need all that much maintenance when you have your design in place.
The actual "work" of your code is pretty concise if you ask me.
C++ adds verbosity, a lot of which they have been removing the need for in the most recent standard and those coming soon.
At least you don't have partial declarations of everything in a zillion different places. In C++ you often need 3 partial declarations of the same class in 2 different files:
You do? I don't think your example is very good.
...how is Java more verbose than C?
This is a beginners view of Java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
vs this in C:
main () {
puts("Hello, World");
}
I rest my case.
Java's verbosity is annoying enough here but the really stupid thing is that for a total beginner to get started they have a ton of alien concepts thrown at them before they even get to what they ant to do:
What is that "public" for?
What is that "class"?
and about that "static"
and "void"
and "String[]""
and "args"
and "system.out"
"Oh", says the tutor "Ignore all that we will come to it later."
The fact that Java forces everything to be a class is highlighted here. It's nuts to impose the braindead object oriented paradigm on everything.
I once watched videos of two different versions of the same algorithms course given at MIT. The first used Scheme the second used Java. Well, in the Scheme version the lecturer spent about ten minutes of the first lecture introducing Scheme and then jumped straight into what the course was about, algorithms. In the second version the lecturer was still trying to put over enough Java that his students could write anything at all half way though the course! Then they could start on algorithms. That is the verbosity of Java and a massive waste of time.
@David Betz:
I've run into plenty of places where I've needed to do the same thing as in my C++ example. If you have 2 objects that point to each other, one a child and the other a parent, you need to do this.
Java isn't exactly what you'd call my favorite programming language. It's certainly not a beginner's language. It does annoy me how complicated a simple "Hello World" program is. However, most people don't learn to program just to write "Hello World" programs. And at least Java's verbosity isn't all redundancy.
Speaking of which, Python, Lua, and probably all other scripting languages beat C in conciseness:
print("Hello World!")
In Python and Lua, you can even omit the parentheses, but that's ugly.
In Lua, I've made very complicated classes with inheritance and all that have about 5 lines of boilerplate in each class definitions (including inheritance) and 0 in user code (the constructor doesn't count).
If you have 2 objects that point to each other, one a child and the other a parent, you need to do this.
Isn't that a totally brain dead and wrong way to be designing a class hierarchy?
What you are saying is that a parent class needs pointers to one( or more) of it's child classes. That just seems wrong. A class should stand alone, independent of it's children.
The only reason a class would need to have knowledge of it's children is if it needs some data or methods that they are going to have when you write them, if ever. But that implies the parent is badly designed, why does it not have that data or methods already in it's own definition?
C++ gurus, am I think this through backwards or what?
Of course JavaScript thinks your Python hello world is a novel.
@David Betz:
I've run into plenty of places where I've needed to do the same thing as in my C++ example. If you have 2 objects that point to each other, one a child and the other a parent, you need to do this.
Java isn't exactly what you'd call my favorite programming language. It's certainly not a beginner's language. It does annoy me how complicated a simple "Hello World" program is. However, most people don't learn to program just to write "Hello World" programs. And at least Java's verbosity isn't all redundancy.
Speaking of which, Python, Lua, and probably all other scripting languages beat C in conciseness:
print("Hello World!")
In Python and Lua, you can even omit the parentheses, but that's ugly.
In Lua, I've made very complicated classes with inheritance and all that have about 5 lines of boilerplate in each class definitions (including inheritance) and 0 in user code (the constructor doesn't count).
You often if not always need a prototype and a function declaration. You never need more than that and for local functions that aren't forward referenced you don't need the prototype. There is never a case that I know of where you need to type the function signature more than twice.
Comments
You mean something like "The Soul of a New Machine", the book that was written by Tracy Kidder about the experiences of the computer engineering team that designed the Data General Eclipse MV/8000, but as a blog?
"If a tree falls in a forest and no one is around to hear it, does it make a sound?" My point is that although forums are great tools for seeking and finding help and news, they are very niche and therefore not good for broadcasting important news to the masses. To future customers. You need newspapers and magazines for this. Or in our modern times, blogs! At some level, Parallax is in the business of Education. Why not spin the prop-2 development process into an educational bit?
Excellent analogy kwinn, except the propeller-2 blog would be non-fiction (I hope). With real people, real problems, real financial stakes!
"The Soul of a New Machine" was not a fictional story. It is an account of the development of a real computer by real people in a real company.
Remember that book was written, or at least published, after the machine was developed not during development. Most companies would not allow people to tell a story like that in real-time.
According to Wikipedia: "The book won the 1982 National Book Award for Nonfiction[1] and a Pulitzer Prize for General Non-Fiction."
[1] http://www.nationalbook.org/nba1982.html#.U9wJ0_mwJ8E entry:
Yes, good point. It's a question of frequency and balance. So maybe this proposed blog would be updated once a month, and report positive news and some negative news. With negative news, you then explain how you'll solve the issue and move on; the negatives become opportunities. Pictures of the process and the people behind the scenes are very important too. This product needs a face.
If you mean Finished silicon, delivered in time to allow someone to release products into the pre-Christmas sales - then no, highly unlikely. aka no chance.
If you mean FPGA builds you can run P2 software on, for development cycle starting, this side of Christmas, then yes, that is much more likely.
Initial FPGA code (COG) I'd estimate is likely sometime this month, given Chip's progress reports.
Fair enough. The progress is encouraging nonetheless.
What will be the main programming language, Spin or C?
So, it's up to you.
Why did Parallax decide to put so much emphasis into C on the propeller? Is it to try to rescue arduino fans? That's the only real reason I can think of. It seems like they're mainly using it for education. Why would you teach someone a really hard language and then show them that it's better done with a much simpler language?
There was no emphasis on C for the Propeller when it was created or for a long time after.
In fact it was not until Bill Henning discovered how to execute Propeller native instructions from HUB RAM, with the help of a really tight fetch-execute loop in COG, that the idea of compiling C for the Propeller made any sense at all.
Even then it was some years before Parallax got behind the idea of C for the Propeller.
Never mind the Arduino "fans". The idea of supporting C on the Propeller is more about what customers want. Nobody knows or cares what Spin is.
Note: I'm not saying that Spin is not a wonderful thing. Personally I think Spin and the Propeller and the Prop Tool are an outstanding example of simple and elegant design that the world should pay attention to. In spirit if not in detail.
Education customers were demanding C for years so finally Parallax gave them what they had been asking for.
Electrodude, you are always encouraged to ask us directly if you want to know. I'd love to dispel myths that we value C more than Spin, or whatever the viewpoint is that we may have contributed to.
The reason we developed C for education is simple. The educators want C. Everybody everywhere is telling them to program in C, from districts to states this is the directive. So we decided to give them what they want in a nicely packaged environment that leverages their prior experience with the BASIC Stamp.
When we first introduced Spin we had two problems. First, it was an entirely new language for them. Though the differences are small and manageable to most programmers, these differences can be big to a teacher who has no prior experience. BASIC can be picked up very quickly, and the Propeller has a slightly longer learning curve with Spin than C. At least I'd argue this to be the case - our C system lets you avoid certain setup with the system clock and using objects. All of the C libraries for education can be called at a top level with hardly any lower level fussing around. Second, our first delivery of Spin was done through the Propeller Education Kit, a really well-written set of projects that provide the best foundation, yet without something like the Propeller Activity Board or a robot kit.
You asked why we'd teach them a "hard language and then show them that it's better done with a much simpler language?"
It's a great question! And the answer is because many of them wouldn't look at Spin until they first saw something done with C. We've had more Spin interest in education since we released our C learning system than in the prior five years.
Spin and ASM are the predominant languages used in all Parallax commercial products.
Ken Gracey
"Spin" has also been turning up a bit more at http://learn.parallax.com http://learn.parallax.com/projects/propeller-spin-language
Parallax's ongoing commitment to Spin is showing more these days...
And there will be another Spin-only hardware project released on Thursday or Friday.
When you're a small company, like us, a small shift of our development team makes it feel like the whole company has a single focus on the outside. Yet something as "simple" as our C program takes nearly everybody in the office to get it launched.
Ken Gracey
OK, let me rephrase. I think your reply is a result of me not choosing my words very carefully.
The specific piece of hardware I'm referring to is being released only with Spin/ASM support. The language was chosen because it was much faster for the engineer who was doing the code development. However, I'd absolutely love to have the same code base ported to C! In fact, I asked the engineer if we could get both Spin and C, but he only had time for Spin since that's his primary expertise with the Propeller. I'll likely be sending you one of these systems so you can port it to C, if you are interested.
So, yes, the volunteers are very important in this regard for the reason you cited: we don't always have the resources internally.
Ken Gracey
I don't mind C's braces at all. And I will admit that Spin has many obscure operators. My main problem with C is how many stupid little mistakes there are to make - missing semicolons, mismatched prototypes, missing casts that would be obvious to any human, obscure link errors due to specifying things to link in the wrong order, extreme verbosity (but nothing compared to C++, which is 99% boilerplate code).
What I'm complaining about is how badly C fits the propeller. Spin fits the propeller almost perfectly, but C feels horrible on it.
Also, Spin has some not-so-obvious features that are easy to trip up on like the behavior of RES and the meaning of @ and @@ and @@@.
I find this statement totally bizarre.
There are many things about C that people complain about but I never hear them complaining about it's verbosity. Although I suspect APL supporters could make a case for it:)
C is a lot less verbose than other common languages, Java, Pascal, Ada, Cobol, etc.
C is is positively cryptic by comparison.
Which languages are you comparing C to that leads you to say it's verbose?
Do you have an example of said verbosity in C?
Let's face it, C is the de-facto language for programming like "English" is to the world. Learning C benefits the student both in academia and the industry and improves the chance of finding a job. Python and Matlab are also important. Moreso, Arduino has proven that C can be learned by anyone willing to try, so Basic is just not necessary IMHO.
I program Arduino Due boards. Not propeller-1. But I don't consider myself an Arduino customer. I'm a customer of 32-bit mcu boards with built-in ADCs, hardware USART, etc., and programmable in C. And I have no problem transitioning to Propeller-2 when available.
An idea: Parallax is developing C for the Propeller-2. Why not team with Arduino and enhance the IDE to let users program the Propeller-2 in C, from the Arduino IDE? Keep Spin for current Parallax customers, and use the IDE to increase marketshare on the C side. I think the 32-bit multi-core processor and program examples showcasing advantages of multiple cores would be educational and a great addition to the Arduino portfolio.
We have the PropASC board that is in an Arduino form factor and someone was building the Arduino library API's for it with progcc.
I very much doubt the Arduino crew would be interested in supporting this much.
I don't care I've got SimpleIDE and vim
OK, thank you. I'm very happy this is the only reason why, and while I can't say I like the reason, I'm sure it's a good strategy.
@David Betz:
Yes, that's why. I should really just write a program to generate header files for me, however, and stop complaining. "Extreme verbosity" would have been better applied to C++. C is verbose but not extremely. Also, how is Java more verbose than C? At least you don't have partial declarations of everything in a zillion different places. In C++ you often need 3 partial declarations of the same class in 2 different files:
test.hpp:
test.cpp:
EDIT:
@David Betz:
What's so hard about res? I've seen people have problems with it, but it was all because they didn't read the manual. @ does annoy me but I think I think I've almost found the reason for it.
You should never have declarations in "a zillion different places". They should be in exactly two places, one in the source code where the function is defined and one in a header file for users of the function or library.
True header files can seem to be redundant verbiage.
However those function signatures and class declarations are out of the way in their own files and don't need all that much maintenance when you have your design in place.
The actual "work" of your code is pretty concise if you ask me.
C++ adds verbosity, a lot of which they have been removing the need for in the most recent standard and those coming soon. You do? I don't think your example is very good. This is a beginners view of Java: vs this in C: I rest my case.
Java's verbosity is annoying enough here but the really stupid thing is that for a total beginner to get started they have a ton of alien concepts thrown at them before they even get to what they ant to do:
What is that "public" for?
What is that "class"?
and about that "static"
and "void"
and "String[]""
and "args"
and "system.out"
"Oh", says the tutor "Ignore all that we will come to it later."
The fact that Java forces everything to be a class is highlighted here. It's nuts to impose the braindead object oriented paradigm on everything.
I once watched videos of two different versions of the same algorithms course given at MIT. The first used Scheme the second used Java. Well, in the Scheme version the lecturer spent about ten minutes of the first lecture introducing Scheme and then jumped straight into what the course was about, algorithms. In the second version the lecturer was still trying to put over enough Java that his students could write anything at all half way though the course! Then they could start on algorithms. That is the verbosity of Java and a massive waste of time.
I've run into plenty of places where I've needed to do the same thing as in my C++ example. If you have 2 objects that point to each other, one a child and the other a parent, you need to do this.
Java isn't exactly what you'd call my favorite programming language. It's certainly not a beginner's language. It does annoy me how complicated a simple "Hello World" program is. However, most people don't learn to program just to write "Hello World" programs. And at least Java's verbosity isn't all redundancy.
Speaking of which, Python, Lua, and probably all other scripting languages beat C in conciseness: In Python and Lua, you can even omit the parentheses, but that's ugly.
In Lua, I've made very complicated classes with inheritance and all that have about 5 lines of boilerplate in each class definitions (including inheritance) and 0 in user code (the constructor doesn't count).
What you are saying is that a parent class needs pointers to one( or more) of it's child classes. That just seems wrong. A class should stand alone, independent of it's children.
The only reason a class would need to have knowledge of it's children is if it needs some data or methods that they are going to have when you write them, if ever. But that implies the parent is badly designed, why does it not have that data or methods already in it's own definition?
C++ gurus, am I think this through backwards or what?
Of course JavaScript thinks your Python hello world is a novel.
JS: