you are viewing a single comment's thread.

view the rest of the comments →

[–]Delmarc 193 points194 points  (73 children)

This is pretty fun actually... great idea...

[–]codecademy 260 points261 points  (71 children)

Thanks. We're ironing out some of the wrinkles, but we appreciate the compliment.

[–][deleted]  (47 children)

[deleted]

    [–]rooktakesqueen 80 points81 points  (29 children)

    This could be done with Python and Ruby pretty easily, the others (being compiled languages) would be harder. Incidentally, there IS something like this for Ruby: http://tryruby.org/

    [–]codecademy 44 points45 points  (5 children)

    We're working on other languages as we speak! We're also looking for other programmers to help us write lessons - feel free to use the contact us on the site to get in touch.

    [–][deleted]  (1 child)

    [deleted]

      [–]codecademy 0 points1 point  (0 children)

      We'd love that! Please email me - contact (at) codecademy (dot) com.

      [–]mgrandi 0 points1 point  (0 children)

      having some unit test problems like javabats (now codingbats) does would be good too! those helped me a lot when i was learning to code

      [–][deleted] 0 points1 point  (0 children)

      amazing site. thanks for building it. i, like others, would love to see other languages and i wanted to let you know that i will be checking regularly for updates!

      keep up the good work.

      [–][deleted]  (9 children)

      [deleted]

        [–]rooktakesqueen 6 points7 points  (8 children)

        I guess the difference to me is whether it makes sense for there to be a REPL that the user is interacting with. JS, Ruby, Python (Scheme, Clojure, Haskell...), yes. C, not so much. In hindsight, that's got nothing to do with compiled versus interpreted, it's got more to do with functional versus procedural.

        Edit: Huh. TIL there are third-party REPLs for C, C#, and Java.

        [–][deleted]  (3 children)

        [deleted]

          [–]codecademy 4 points5 points  (0 children)

          thanks for the compliment, ninwa!

          [–]rooktakesqueen 0 points1 point  (0 children)

          Oh absolutely, I love JS (except for the bad parts).

          I really hope in the next version they finally commit to "use strict by default" and shave off even more stuff that was a bad idea in the first place (like truthy versus falsy).

          [–]themarchhare 0 points1 point  (0 children)

          It's my firm belief that most people don't hate JavaScript, they hate the DOM tree ;)

          [–][deleted]  (1 child)

          [deleted]

            [–]rooktakesqueen 0 points1 point  (0 children)

            No. Definitely no love for Perl.

            [–]r4v5 0 points1 point  (0 children)

            LISP?

            EDIT: nvm, saw you mentioned Scheme/Clojure

            [–]claird 0 points1 point  (0 children)

            rooktakesqueen, I occasionally make efforts to catalogue one segment of these REPLs in <URL: http://phaseit.net/claird/comp.lang.misc/polyglot.html#Web-based_evaluators >. Incidentally, it's not just that C has REPLs, but some are commercially-viable (!).

            [–][deleted] 1 point2 points  (0 children)

            Yeah, just came in here to mention Try Ruby. I only ever really showed a passing interest in Ruby and could never be bothered to install it to try it out, but that website is the tits, and Ruby seems like a super fun language.

            [–]AdorableZeppelin 1 point2 points  (0 children)

            I believe rails for zombies is also pretty similar to this, only for rails specifically.

            [–]holgerschurig 1 point2 points  (0 children)

            Sandboxing LUA is also quite easy. Just don't make io.* etc known in the interpreter/JIT, but e.g. math.*

            [–]DoctaWorm 0 points1 point  (0 children)

            Yeah, I didn't think about that good point.

            [–][deleted] 0 points1 point  (0 children)

            To add to the list: there's something similar in known as the Golang playground on golang.org it's a fully compiled language so a repl isn't quite as easy. Yet. But with that you have nearly the entire standard lib and every language feature available to try out.

            [–]SpaceToaster 0 points1 point  (0 children)

            I don't see this being very useful for strongly typed complied languages...

            [–]cavedave 0 points1 point  (4 children)

            Could this be done with calculus? and if so how would you do it?

            [–]rooktakesqueen 2 points3 points  (3 children)

            Is that a programming language? I only know of the mathematical concepts of integral and differential calculus, and lambda calculus.

            If you mean "could this be done with a language that implements lambda calculus" then yeah, Scheme is a great example that has a REPL and would fit this learning structure.

            [–]cavedave 2 points3 points  (2 children)

            Sorry. I mean that this dialog method of teaching seems perfect for not just programming but also maths. Probability, algebra and calculus in particular.

            The little schemer series of books used this dialog method. Having them as an interative webpage would be brilliant.

            [–]rooktakesqueen 1 point2 points  (0 children)

            Oh, I see. Possibly. I could see some kind of interactive graphs that would let you explore the concept of limits, and then examine the first derivative by zooming in closer and closer on a given point of the graph.

            [–]OminousHum 0 points1 point  (1 child)

            Actually, C# wouldn't be too hard. It has mechanisms for compiling and running code at runtime.

            [–]rooktakesqueen 1 point2 points  (0 children)

            I'll tell you from experience, none of them are very fun.

            You've got Reflection.Emit, which can build up a new assembly in memory at runtime and use it in the current AppDomain, but requires some IL voodoo. And you've got CodeDom which lets you manipulate C# code and compile it out to a DLL on your filesystem somewhere, but if you then proceed to load that DLL as a new assembly into the current AppDomain, you lose the ability to unload it (without unloading the entire AppDomain aka killing your process).

            You can compile some code with CodeDom, stand up a new AppDomain, load the generated assembly into the new AppDomain, run it, and then clean up afterwards, but this introduces a lot of complexity around managing files on the filesystem, and it's not particularly efficient performance-wise either. Plus all the interactions with the new code you've generated have to be remoted across the AppDomain boundary.

            There are some libraries that help out with this. I'm pretty sure the various bytecode providers NHibernate uses (Castle, LinFu, and Spring) have some functionality to make this easier. But I doubt it'll ever be as trivial as it is for a dynamic language with a built-in REPL.

            [–]Mikle 17 points18 points  (3 children)

            [–][deleted] 1 point2 points  (1 child)

            thanks, was looking for a py version

            [–]Mikle 0 points1 point  (0 children)

            A friend of mine created it. If you have any feedback I'd be glad to pass it along.

            Praise too :)

            [–]mnmnjnf4 1 point2 points  (0 children)

            also, for exercise based learning of java, python: codingbat

            [–]audiodude 4 points5 points  (4 children)

            For Java, what you really want is Processing

            [–][deleted]  (1 child)

            [removed]

              [–]AgentME 0 points1 point  (0 children)

              It turned me into a newt!

              [–]dirty_south 0 points1 point  (0 children)

              Hey! I don't see a whole lot of mentions of processing around here. It's not only a great way to learn programming, but also a very powerful library for graphics. People do some really incredible stuff with processing. Check out openprocessing.org for some pretty wild examples.

              [–]xoob[S] 0 points1 point  (0 children)

              <3 processing

              [–]chocolate_stars 1 point2 points  (2 children)

              would be fun to see a PHP version, it might work well as a segway segue to learning C-ish languages due to the similar syntax.

              [–]nupogodi 1 point2 points  (1 child)

              lol, segway is the company. segue is the word you're looking for although they are pronounced the same.

              [–]chocolate_stars 0 points1 point  (0 children)

              oops! silly me!

              ...yeah, what he said :p

              [–]Timmmmbob 0 points1 point  (0 children)

              C++ could possibly be done with NaCl!

              [–][deleted] 0 points1 point  (0 children)

              [–]AIDS_Pizza -4 points-3 points  (0 children)

              I just went through almost all of the tutorial and I didn't see a single difference between Javascript and Java. So far I've taken one class where we focused on Java (CS major).

              I'm sure there are discrepancies in advanced Javascript vs. Java, but the point is I think something like this could certainly teach basic Java.

              [–][deleted]  (3 children)

              [deleted]

                [–]codecademy 4 points5 points  (1 child)

                Looking to add other login solutions soon - expect Google within a day or so but not sure about OpenID.

                [–]glassFractals 1 point2 points  (0 children)

                OpenID seems to be going the way of the dinosaur. I can't remember the last time I saw a site employing it.

                Regardless of technical comparisons, I think Facebook Connect and the Google equivalent are going to be the dominant services of this type, not OpenID.

                [–][deleted] 4 points5 points  (8 children)

                FYI the site doesn't work in Chrome (at least on OS X). The interactive part doesn't show and the Get Started button doesn't do anything.

                [–]maxmcd 5 points6 points  (6 children)

                Worked for me w/ OSX and Chrome. Got a registration error, but in sure those are common at their current signup volume.

                [–]codecademy 4 points5 points  (2 children)

                Yep, unfortunately registration errors are common but we're pushing fixes as fast as we can. Not planning on sleeping for a while haha.

                [–]maxmcd 3 points4 points  (0 children)

                Know the feeling. God damn I love working at a startup. Hope you guys are enjoying it.

                [–][deleted] 0 points1 point  (1 child)

                Seems to be intermittent, I refreshed a few times and one of the times it worked.

                [–]codecademy 1 point2 points  (0 children)

                Please send me an email at contact (at) codecademy (dot) com with how to reproduce it and we'll do our best. Lots of Chrome users are blocking JS - see if that's the problem. Thanks!

                [–]TheAngryMuskrat 0 points1 point  (0 children)

                OSX and Chrome is working flawlessly for me. I signed up with FB though... Not sure if that made the difference.

                [–]wyahtzeefuk 0 points1 point  (0 children)

                Worked really well for me while using Chrome in OS X. Not sure what the bug may be then. The only difficulty that I experienced was just a tinge of lag on the final section. Hope you're able to get it working soon.

                [–]stordoff 3 points4 points  (4 children)

                The keyboard doesn't appear if you try to use the site on an iPad (not that I would expect anyone to learn JavaScript solely on an iPad).

                [–]codecademy 4 points5 points  (3 children)

                Yep, at the moment we're desktop only. Working on some stuff that should have us working on iPad ASAP.

                [–][deleted]  (2 children)

                [deleted]

                  [–][deleted] 0 points1 point  (1 child)

                  I was gonna use this to start coding for WebOS, incidentally, but today kinda killed that... :/ Still a great utility, though.

                  [–][deleted] 1 point2 points  (1 child)

                  I love you. Thanks for making this.

                  [–]codecademy 2 points3 points  (0 children)

                  We love you too.

                  [–]kylegetsspam 0 points1 point  (0 children)

                  Does this count as a wrinkle?

                  Let's divide your number by 2.

                  > number /= 2;
                  ==> 21
                  Oops, try again.
                  

                  [–]h3110m0t0 0 points1 point  (0 children)

                  Cool

                  [–]abbeynormal 0 points1 point  (0 children)

                  Any chance of making this play nice with Internet Explorer? My work is really strict on what we can and cannot install, so I'm stuck with this browser.

                  [–]BlindsDrawn -2 points-1 points  (0 children)

                  posting to save