Open Side Menu Go to the Top
Register
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** ** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

10-20-2011 , 01:05 PM
The question is the brag, ldo
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-20-2011 , 01:17 PM
Ah, just saw your edit... thought you were saying your were the author
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-20-2011 , 08:29 PM
Does this mean that once I get through SICP I can walk around with a trophy? Too bad that kid's school uses Dr Racket. Racket is a safe version of Scheme, blocking your ability too add many function abstractions which is basically what makes Scheme and Lisp awesome and the whole point of SICP. Besides, emacs is way better to learn than the Racket IDE. Actually, Dr Racket has a pretty awesome graphical stepper in the debugger. LoL, already an egotistical wacko.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-20-2011 , 08:44 PM
I don't know Dr Racket, but I used Dr. Scheme (might be an older version?) to TA a course and it was really really good.

There's actually a lot of advantages to restricting the feature sets of the language when you're starting to learn the language. Using a simple version of Scheme we had the students entirely understanding the syntax by the end of week 1.

Compare that to Java:

Code:
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
where a first year student will be lucky to understand everything there by the end of the course.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-20-2011 , 09:39 PM
To be sure, I sort of like Sheme simplfied, but when
Code:
 (define add +)
throws an error I get a little flustered. Of course cuddering is still legal in Racket, so I shouldn't complain.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-20-2011 , 10:36 PM
I understand the complaint. But from a certain perspective that's actually a fairly complex statement since it involves side effects and state.

It's nice to build up a person's knowledge of programming without ever having to use a "you can ignore this and just trust that it won't effect what you're doing".
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-20-2011 , 11:57 PM
Quote:
Originally Posted by jjshabado
It's nice to build up a person's knowledge of programming without ever having to use a "you can ignore this and just trust that it won't effect what you're doing".
I do agree with that. I went a good 3 years before I got fed up and looked up what "using namespace std;" did.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-21-2011 , 01:31 AM
Quote:
Originally Posted by jjshabado
I understand the complaint. But from a certain perspective that's actually a fairly complex statement since it involves side effects and state.
For certain, which is why the complaint isn't really valid. People survive just fine without this particular feature in their programming language, but it is something that once you have, you think, "Gee, why can't I do this in XXXX language?" But at the same time, another person may look at Scheme and think, "WTF? No Do-While Loop? No For Loop?" and those are valid complaints as well, but within the parameters of Scheme, it's not really valid.

Taking SICP in the context of what the course is about, it can't really be done without a language like Scheme, because the class is about building a new language using top-up / bottom-down programming, and it is about having the freedom of creating an inherently high-level language from the bits and parts of a simpler language: to create complexity from simplicity. Now of course, if you want a Do-While Loop, you can create one, abstract it away, and then have a function called Do-While or doWhile, or do-it-the-way-I-like-it-LOOP and that is brilliant in the parameters of THAT class, but in the real world, how much is this needed? In an introductory class, is that needed? Probably not.

Quote:
It's nice to build up a person's knowledge of programming without ever having to use a "you can ignore this and just trust that it won't effect what you're doing".
This is exactly why I never been able to get into Java, no matter how many times I approach the language. Reading or hearing "Don't worry about what Static and Void means for now" is so deflating. But now I'm blaming the style it is taught on the language itself.

Maybe I want to know what Static and Void means, and for anyone who is interested in learning this stuff, that statement should be soul-crushing, but Java is called a "corporate language" and from day one you are already taught to not ask questions, do what your told, and trust the manager / professor, and this is just wrong on so many levels. Why not force the students to wear a suit and tie, shower, and shave before they come to class?

Maybe Java is an incredible language, and maybe they got it right after all, but man, I'm not convinced yet, and to be honest, I'm not interested in trying to find out. Give me C, give me Lisp, give me Python, anything that won't force me to type-check. Let me learn to grock by being a perpetual ****-up. Let me create a functioning program in 10 lines of code without having to depend on 15 boiler-plates.

I don't mind using Racket because emacs is tiring to use at times, and sometimes I just want to see something besides a large blinking square, but I also think Racket is like Java in that it comes loaded with tons of crazy features and there is no good reason to learn to create these things yourself if you have everything pre-build. I'm not talking about a Matlab equivalent here, just a bunch of stuff that I believe shouldn't come with the language because it should be easy to implement by yourself with a little work.

Of course, the point of Racket is to get more users and separate itself from Scheme, but does this need to come at a cost of taking unique components away from Scheme even if I set up the defaults to be "pure" Scheme? I don't think so.

Of course, if Racket is going to cause more love for prefix notation I am all for it. Until then we have Clojure I guess.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-21-2011 , 11:43 AM
Just curious, are there any other NYers that frequent this forum?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-21-2011 , 11:28 PM
<< Reformed NYer
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-22-2011 , 01:25 AM
my university had us learning Scheme early and i hated it, refused to even try learn it, and eventually dropped the class. i wanted to learn something 'normal' hah
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-22-2011 , 01:31 AM
Quote:
Originally Posted by myNameIsInga
This may have already been posted, but I found it a great read:
http://www.codingthewheel.com/archiv...ftware-failure
i found myself skimming the woe is me repetition after the first paragraph hoping there would be something worthwhile, and ending up mad at myself for giving it the benefit of the doubt
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-22-2011 , 09:37 AM
Quote:
Originally Posted by greg nice
my university had us learning Scheme early and i hated it, refused to even try learn it, and eventually dropped the class. i wanted to learn something 'normal' hah
The absolute worst students for the course I TAd were the ones that came in 'knowing' Java or C++. They were so prepared to impress everyone with their skills that when they ended up knowing next-to-nothing like everyone else they whined a lot.

That's one more benefit of using something like Scheme to start teaching Computer Science - it makes it easier to distinguish programming from computer science.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-22-2011 , 02:24 PM
I am one of those students that programed for years before being introduced to functional programing, specifically Scheme. I agree that there are benefits to having a more restrictive language definition for the purposes of teaching. It allows you to focus on the fundamentals and limit the "don't worry about that for now" moments.

That being said, I will never write a real program in Scheme. My professor had taught programing fundamentals using Scheme for years and hate Java. He made no attempt to hide that fact. I'm fairly confident that his inability to make any compromises did not help my dis-pleasure with Scheme.

My biggest problem with Scheme is that so much is done recursively because that is the way it is done, not because that is the best way to write the algorithm. One of the biggest complaints with Java is that everything has to be a class even when that is not the best way to associate the code. However, when you take a step back, both groups of people are complaining about the same things.

The extension to this is the use of lists as a structure to hold different information. This is forces you to make order of the list important as each item in the list has a special significance, and thus handled differently. It is nice to be able to define a data structure in 2 simple sentences, but when you use these simple definitions to represent something that is fairly complex, the code suffers. S-expression is the perfect example of what I am talking about. Very simple definition and very flexible, but a bitch to write code for.

Another thing my professor didn't like about Java was that function definitions are so verbose.
Code:
(define (add x y)
  (+ x y))

//vs

public int add(int x, int y) {
  return x + y;
}
However, one of the other fundamentals he was teaching was commenting your code. So we had to write documentation for every function. Part of that documentation required us to state the types of each parameter and the return value. This is extra text we had to write to fully explain how the method should be used. Java builds this into the function definition. If you need to write a comment to explain how to use the function, then that can't be ignored when it comes to verbosity.

In the end, people have made language that pick an extreme in a specific direction that are restrictive. Now languages that provide flexibility and allow the programmer to decide the best way to write the code.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-22-2011 , 04:12 PM
This article was linked in the SE thread, and I think it is fitting, especially with IT's thinking.

Spolsky points out that SICP is supposed to teach you how to think on multiple layers of abstraction, and for that purpose, the Java code is awful.

The point of not having to declare variable types is to allow the programmer to package away the details of the language and just let the thing work, so

Code:
(define (add x y)
    (+ x y))
should be packaged down to level 4 or so. In other words, you make this code, you should have it as the base of your program, not something that you specifically control.

Now, Scheme defaults to integer division, but the nice thing about it is that you don't have to write

Code:
(float (+ x y))
in order to get a float back, simply input ie: a float in x and y inherits the property.

As an aside, Racket defaults to fractional division ((/ 3 2) = 3/2), which is simply confounding to me, but I digress.

What makes this interesting IMO, is that you are immediately faced with an ambiguity: Do you want to force this layer to specify your types or do you want to have your types specified somewhere else? I would argue that it is better to have specified functions at layer 2 or 3 that specifies int/ float types as opposed to trying to create an entire program on two very low-level functions.

I see that Java function as the pure illustration of YAGNI.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-22-2011 , 04:52 PM
IT, I think you make lots of reasonable points. And I'd certainly be against a school that tried to use Scheme throughout the whole curriculum - that would definitely be crazy.

What I liked about our program is that the first semester was in Scheme and the second semester was in Java. We wrapped up the Scheme course by getting to a point where you're basically building objects with public/private members and functions in Scheme. It was pretty cool and made a really easy transition into Java.

I feel like our students (over the other stream which was pure Java all year long) had a much better appreciation for the strengths/weaknesses of a language and a more robust toolkit for solving problems with code.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-23-2011 , 12:02 AM
I support the concept that you should learn how to program, not learn a language, so I'm happy that other classes use different languages.

This class started to teach OO concepts at the end, but used an OO framework built into Scheme. The professor used how complicated things got as a knock on OO vs functional. But doing the same things in an OO language would not gave been as bad as the language was to handle that type of code.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-23-2011 , 12:37 PM
Quote:
Originally Posted by TheIrishThug
I support the concept that you should learn how to program, not learn a language, so I'm happy that other classes use different languages.

This class started to teach OO concepts at the end, but used an OO framework built into Scheme. The professor used how complicated things got as a knock on OO vs functional. But doing the same things in an OO language would not gave been as bad as the language was to handle that type of code.
I feel that way about a lot of academic people in computer science. They don't necessarily get or explain well the whole "languages are just tools" concept.

Edit: Actually, that's probably just true of lots of people in computer science.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 09:20 AM
Anyone have a suggestion for a domain registrar?

I have a domain registered that I only use for mail addresses for me and my family.

I use the current registrars 'forward email' service, which would be perfect were it not for the fact that when you only have the domain registered with them, they delay mail for several hours before forwarding it to make you pay for one of their hosting packages instead (which I actually did and that experience was the final straw for why I now want to switch away from them.)

So, any suggestions for a registrar that's easy to set up and provides reasonable service? As I only need a basic email forwarding service to my main email account for this domain I would like to avoid having to set up a full email hosting package with them. I wouldn't mind paying a little extra for instant forwarding though, but that basic service is all I need.

Godaddy or are there better alternatives?

My current one is mydomain btw, so don't bother suggesting them
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 12:03 PM
I think choosing a registrar is basically just a battle of lesser evils. Alot of the sites are nearly corrupt in how difficult they make it to transfer a domain away from them, and godaddy is this benign entity whose main vice is trying to oversell to a ridiculous degree. I would just go with them.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 01:32 PM
Quote:
Originally Posted by MinusEV
Anyone have a suggestion for a domain registrar?

I have a domain registered that I only use for mail addresses for me and my family.

I use the current registrars 'forward email' service, which would be perfect were it not for the fact that when you only have the domain registered with them, they delay mail for several hours before forwarding it to make you pay for one of their hosting packages instead (which I actually did and that experience was the final straw for why I now want to switch away from them.)

So, any suggestions for a registrar that's easy to set up and provides reasonable service? As I only need a basic email forwarding service to my main email account for this domain I would like to avoid having to set up a full email hosting package with them. I wouldn't mind paying a little extra for instant forwarding though, but that basic service is all I need.

Godaddy or are there better alternatives?

My current one is mydomain btw, so don't bother suggesting them
Nooooooooooo DO NOT USE GODADDY whatever you do. You would be better off using an IP address rather than registering a domain with them.

http://duckduckgo.com/?q=why+godaddy+is+evil

I would strongly recommend Gandi (dot net), I have had an excellent service with them
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 01:45 PM
never use godaddy for domains. (probably never for anything). I recommend namecheap.com for domains, but no idea what their mail forwarding is like. probably good...
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 01:53 PM
Why not use google apps for email domain?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 05:10 PM
Thanks a lot for your suggestions - I guess godaddy is out

Gandi looks promising - nice, clean and informative web-site and the only mention I could find of slow email-forwarding in their support forum, was an issue back in 2009 that was a temporary thing.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
10-24-2011 , 05:46 PM
Ye... if you search for feedback about them its all good. I have used them myself and have nothing bad to report (although I only host a couple of domains with them and dont use email forwarding)

FYI, I use google apps for email and it works really well... just point your mx dns records to google apps and it all works great.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote

      
m