Advantages of learning Ani at a young age?

59 views
Skip to first unread message

Jayray

unread,
Jul 29, 2010, 9:08:31 PM7/29/10
to anic
Hey there, I am a 15 year old with a lot of free time on my hand.
Recently I got my test score back on the AP Comp Sci test, which I got
a five, and am seasoned in pretty much every language, although my
favourite is C. At this point I am just listing my abilities to give
you a sense of how good I am. Oh, also I have made my own programming
language, which I call FACT. My OS of choice is FreeBSD, but that's to
hold me over until the Hurd is finished.

So, for what reasons should I take up this language? I'm looking for
something to dramatically increase my computer science abilities, and
I'm thinking this just might be the perfect project. But I wanted to
ask you guys first, what is your opinion?

Jason Cho

unread,
Jul 29, 2010, 10:25:49 PM7/29/10
to rook...@gmail.com, anic
Hi,

I'll first try to answer your question on why you should *learn* parallel programming language, and highlight why I think ANIC looks pretty promising. Bare in mind though, that unlike Adrian and some other people who regularly contributes to the language, I'm more of a speculator, I'll only be able to provide why you should be interested in ANIC-like languages.

First off, I personally believe that the future of computing depends on parallel programming languages. The current technology has reached its peak clock speed, and it won't be able to make this faster without either 1) use tremendous amount of energy or 2) use more cores. 2) is more reasonable mainly because it's cheaper, both to manufacture and to individuals.
However, there's a problem with 2). It's actually pretty hard to code a program that actually utilizes all its cores. One may be tempted to think that because, say, you have 8 cores, your program will be 8 times faster. This isn't the case; programs are innately sequential, and hence, merely adding cores won't really speed up your program... unless you explicitly use parallel programming methods to program your code. 

This introduces another problem however; most modern, C/C++ based codes are pretty hard to develop. MPIs, for example, have some state of the art programs that almost fully utilizes its numerous cores. Unfortunately, they are not only difficult to learn, but you have to modify your way of thinking about C/C++. What further complicates the problem is that the C/C++ codes are inherently sequential, and hence, you have to explicitly call parallel processors to make your codes work. OpenMPs have a different problem in that, they require an extensive knowledge of both the caches/memories, AND the user's computer. 

From my understanding of ANIC, the language most closely resembles a data-flow programming language paradigm. Benefits of this paradigm is that it doesn't view program as sequential, but rather, in how data change. This means that all your 'variables' may change concurrently, provided that they do not have any dependencies in them. The current dominant paradigm (OpenMP, MPI-like) in parallel programming would be hard to become mainstream-they are simply too hard. This is more or less why only a small group of people could actually program things in parallel *well*. However, once you could plan out how your data is going to flow, programming in ANIC is simpler to make things work than do other dominant languages. Furthermore, if you do end up contributing to the code base, you'll really learn how parallel programming works. 

-Jason
--
----------------------------------------------
Jason Hyun Duk Cho :: jhd...@gmail.com
University of Illinois at Urbana-Champaign
Department of Computer Science
James Scholar Program
Treasurer - Triangle Fraternity

Jayray

unread,
Jul 29, 2010, 10:58:23 PM7/29/10
to anic
Thanks for your long response! It was extremely detailed and helpful
and I thank you for it!

But I have a question about how pthreads works, and that is, how? This
may be the wrong place to ask this question, in which case I'll look
it up some where else, but the whole ordeal confuses me quiet a bit.

winxordie

unread,
Jul 30, 2010, 9:03:14 PM7/30/10
to anic
> Recently I got my test score back on the AP Comp Sci test, which I got
> a five, and am seasoned in pretty much every language, although my
> favourite is C. At this point I am just listing my abilities to give
> you a sense of how good I am. Oh, also I have made my own programming
> language, which I call FACT. My OS of choice is FreeBSD, but that's to
> hold me over until the Hurd is finished.

First I'd like to congratulate you on your 5. (Welcome to the every
comp. sci. major club!)
However, what do you mean you're seasoned in pretty much every
language?
You claim to be versed in languages like Forth, Smalltalk, ML, Prolog,
and Lisp?
(These five are each representative of very different approaches to
programming.)
It's a little bit hard to believe; if you're claiming to be seasoned
in every Algol-based
language I'd understand. New languages pop up everyday, some with very
interesting
ideas to contribute. Check out Frink if you want to know see an
example.

> So, for what reasons should I take up this language? I'm looking for
> something to dramatically increase my computer science abilities, and
> I'm thinking this just might be the perfect project. But I wanted to
> ask you guys first, what is your opinion?

ANI has an approach to parallelism which I've found to be rather
interesting.
I won't claim that it is *the* way to do parallel programming or that
it will dramatically
increase your 'computer science ability'; I will claim however that it
will probably lead you
to think in a new way. The guys heading the project claim that the
implementation of the
language will be more efficient at parallel processing than C since
it's based around
parallelism. For that we'll have to wait and see. (Here's looking at
you regulars!) :P
I'd encourage you to check this particular language out, because I
think it has promise,
but that's just my value claim. Understand that people have been
claiming that parallelism
is the saving grace to computer science's sins since the 1960's, and
progress has been hard.
As often said, there's no silver bullet.

>But I have a question about how pthreads works, and that is, how? This
>may be the wrong place to ask this question, in which case I'll look
>it up some where else, but the whole ordeal confuses me quiet a bit.

Pthreads is a POSIX standard; standards work by their specification.
You probably mean
some implementation. You probably want to dig around the pthreads
documentation and
source code for your specific library or language, and if you're stuck
try the mailing list or
IRC for your specific library/language.

You remind me of myself at 15 (C, FreeBSD, sophomoric), so I'm
offering you a suggestion:
cut back on the hubris. 15's not a young age; there are 6 year olds
running around in South
Africa programming in Scratch. Learn some theory; you claim that
you've got a good handle
on basic imperative languages, so let's see you take on SICP (look it
up) and Knuth's
Art of Computer Programming Volume 1. After that try learning at least
two of the non-Lisp
languages I listed above you don't know. For fun, try learning
Haskell. After you're
"well-versed" in it, you'll probably be in your 20s.

Also, apologies to the admins for going completely off-topic.

Jayray

unread,
Jul 30, 2010, 9:57:40 PM7/30/10
to anic
Thanks for all the suggestions! I have read SICP, I forgot to mention
that. I guess taking up the art of computer programming may be fun, so
I'll try that next.

Daniel Kersten

unread,
Jul 30, 2010, 10:16:58 PM7/30/10
to winx...@gmail.com, anic
On 31 July 2010 02:03, winxordie <winx...@gmail.com> wrote:
> Recently I got my test score back on the AP Comp Sci test, which I got
> a five, and am seasoned in pretty much every language, although my
> favourite is C. At this point I am just listing my abilities to give
> you a sense of how good I am. Oh, also I have made my own programming
> language, which I call FACT. My OS of choice is FreeBSD, but that's to
> hold me over until the Hurd is finished.

First I'd like to congratulate you on your 5. (Welcome to the every
comp. sci. major club!)
However, what do you mean you're seasoned in pretty much every
language?
You claim to be versed in languages like Forth, Smalltalk, ML, Prolog,
and Lisp?
(These five are each representative of very different approaches to
programming.)
It's a little bit hard to believe;

 
if you're claiming to be seasone in every Algol-based language I'd understand.

I wouldn't.

Even Algol-based languages are very different from each other.
Within the imperative programming paradigm (which Algol-based languages fit into), there are vastly different sub-paradigms: procedural, class-based OO, prototype-based OO, aspect-oriented, array processing, generic, modular, event-driven etc etc.

Finally, usually, even languages of the same paradigm and style are different enough from each other that knowing one doesn't automatically mean you know another (eg, if you know Java, doesn't mean you automatically know C# - even though learning C# would be very easy).
 
New languages pop up everyday, some with very
interesting
ideas to contribute. Check out Frink if you want to know see an
example.

> So, for what reasons should I take up this language? I'm looking for
> something to dramatically increase my computer science abilities, and
> I'm thinking this just might be the perfect project. But I wanted to
> ask you guys first, what is your opinion?

ANI has an approach to parallelism which I've found to be rather
interesting.
I won't claim that it is *the* way to do parallel programming or that
it will dramatically
increase your 'computer science ability'; I will claim however that it
will probably lead you
to think in a new way. The guys heading the project claim that the
implementation of the
language will be more efficient at parallel processing than C since
it's based around
parallelism. For that we'll have to wait and see. (Here's looking at
you regulars!) :P

Its meant to be a bold claim, because bold claims draw attention. It is, in theory, possible that ANI will blow C away performance-wise (with a reasonable native code compiler + good parallelism). Will ANI achieve this goal? Maybe. Maybe not. Optimistic goals give you something worthwhile to work towards, however, and crazy claims sure do help publicity (and even if ANI fails, there's no such thing as bad publicity).
 
I'd encourage you to check this particular language out, because I
think it has promise,
but that's just my value claim. Understand that people have been
claiming that parallelism
is the saving grace to computer science's sins since the 1960's, and
progress has been hard.

I wouldn't say that parallelism is the saving grace to computer science sins, but its certainly how performance will be achieved on upcoming hardware. Even the best optimising sequential code compiler won't be able to get any faster once the maximum speed of a processor core has been hit, unless it can make use of other cores (and the hardware manufacturers claim we can look forward to processors with lot and lots of cores. We can already get 6 core x86 machines, for example).

As for progress - funny, since I'm interested in ANI, but I don't actually believe the "problem" is lack of programming tools, but rather education. I don't think this email is the right place to explain that statement though.
 
As often said, there's no silver bullet.

And I don't think its appropriate for anybody to expect there to be. For anything (not just programming).
 

>But I have a question about how pthreads works, and that is, how? This
>may be the wrong place to ask this question, in which case I'll look
>it up some where else, but the whole ordeal confuses me quiet a bit.

Pthreads is a POSIX standard; standards work by their specification.
You probably mean
some implementation. You probably want to dig around the pthreads
documentation and
source code for your specific library or language, and if you're stuck
try the mailing list or
IRC for your specific library/language.

You remind me of myself at 15 (C, FreeBSD, sophomoric), so I'm
offering you a suggestion:
cut back on the hubris. 15's not a young age; there are 6 year olds
running around in South
Africa programming in Scratch. Learn some theory; you claim that
you've got a good handle

Just today my mother was telling me about her friends 13 year old nephew who seems to be a better programmer than I was at ~17. I'm not sure if this is depressing or not :D
 
on basic imperative languages, so let's see you take on SICP
 
And do all of the exercises! Its easy to simply read the book - but doing the exercises is where the real understanding (and value) lies.

(look it up) and Knuth's Art of Computer Programming Volume 1. After that try learning at least
two of the non-Lisp
languages I listed above you don't know. For fun, try learning
Haskell. After you're
"well-versed" in it, you'll probably be in your 20s.

Also, apologies to the admins for going completely off-topic.

There's admins here? *shifty eyes*


--
Daniel Kersten.

Daniel Kersten

unread,
Jul 30, 2010, 10:27:12 PM7/30/10
to rook...@gmail.com, anic
On 30 July 2010 02:08, Jayray <rookie.mp@gmail.com> wrote:
I have made my own programming language, which I call FACT

I would be very interested in seeing your language. I'd be itnerested in seeing the implementation, but even if you just emailed us some sample code (or better yet, put it on pastebin or pastie and email us a link), that'd be cool :)

but that's to hold me over until the Hurd is finished.

After that phallus99 guy, I'm not sure if you're serious or not, but whatever. I'll pretend you are :)
In any case, I'd say you could be waiting a long long time for hurd to be ready! At this stage, I wonder if anybody is even working on it anymore.


--
Daniel Kersten.
Leveraging dynamic paradigms since the synergies of 1985.

Jayray

unread,
Aug 2, 2010, 5:31:23 PM8/2/10
to anic
I will definitely be sure to post some code as soon as I get back from
a trip I am currently on, it's all written in C, so it might be a tad
confusing without the full project, but I'll add comments!

As for Hurd, I know it sounds odd, but I have the feeling it should be
done within the next two years, as there is something called DDE being
worked on, which will essentially port all Linux drivers over.

On Jul 30, 10:27 pm, Daniel Kersten <dkers...@gmail.com> wrote:
Reply all
Reply to author
Forward
0 new messages