What programming language changed your outlook on creating software?

25    14 Jul 2015 21:55 by u/nsfwalias

I've had a few ah-ha moments learning languages from discovering lambdas in Perl to polymorphism in Java, to actors in Erlang. The biggest brain changer was lisp and its simplicity but utterly bewildering flexibility.

59 comments

21

C#. It gets a lot of hate for being developed by Microsoft. It is actually a great language!! Anonymous Functions y Delegates are absolutely fantastic when developing complex programs! also, LINQ queries make me smile, its just beautiful. (look them up, its worth it).

1

The easy 2-way data binding with the GUI is slick. I needed to build an data entry tool for a game when it was suggested I look at C#. It took only a handful of hours to build up a GUI and tie it to an XML file.

4

C# was the first language I've used where the code read like a spoken language.

foreach(Person friend in Friends.Where(x => x.Age > 25)

So succinct and intuitive. Too bad my current job is 95% Java.

2

That's a nice example of just how useful LINQ expressions can be! I agree, its very natural.

0

for(Person friend : friends.stream().filter(x -> x.Age > 25).collect(Collectors.toList()))

LINQ is so much more elegant

3

C# is a language everyone hates until they try it. I think it's a great language that just feels right.

9

Javascript. I used to enjoy programming.

1

Your comment made me laugh, because I've been doing a lot of JavaScript these days (working on moving a webapp to AngularJS). It's funny because it's true, though mainly because we programmers hear about all the awesome stuff that's going to be added in the next version of JavaScript sometimes years before it's actually implemented in all the major engines :/

For example: I've been dying to use let in my JavaScript for ages, but Firefox requires <script type="application/javascript;version=1.7">, which no other browser will bother reading, and IE10- doesn't support it (but you find all sorts of people still using older versions because they refuse to leave XP), and all the other cross-browser problems.

1

Fear not, friend.

If you're looking to be ES6 complient and would like to get the practical effects of the spec without having to wait for browsers to catch up, you can use something like BabelJS to achieve it!

The Setup and Usage sections of their website walks you through installing and using Babel in around 2 dozen different ways (Browserify plugin, Gulp task, Jade template script tags, Webstorm plugin, etc etc).

0

I looked into BabelJS, Closure, and a few other transpilers, but since the JavaScript I'm working on at the moment doesn't really benefit from the aspects of ES6 that they're actually able to emulate, I've just written it in ES5.

The main feature I've wanted to use is let, but that simply becomes var. No point in using a transpiler for something a simple find and replace can fix.

3

F# actually. I had to rewire my brain but I now develop more modular programs.

2

Yes, this is on my list to look at. I wonder what it might give beyond Lisp or Haskell though - any idea?

0

dude, i know rite??? FSharp is the stuuuuufffffff

3

Haskell. Made me google "Maybe in C++?"

1

Seconded - the type system really is something else. It also taught me the value of higher order functions and functional purity, which changed how I write code in other languages.

3

Rust. It shows you can have a high level language without sacrificing performance or memory safety. It's bridging the gap between systems programming and functional programming - you CAN write the efficient algorithms with mutability and then build high level abstractions using them. Also Cargo is really really nice, I will never compile anything in C or C++ ever again if I can help it.

1

One reason I haven't started looking into Rust is because it's still under development. I want to see how well it matures before I start writing things in it.

1

You might be pleased to know that they aren't even in beta anymore. They're in full blown production release mode. No more breaking nightly changes. No more unstable syntax or language behaviors. So really...there's never been a better time to give the language a look-over

Go give it a try!

0

I wasn't aware it was out of beta, but does it have the sheer number of libraries of Java? That's really what I meant by mature. After all, people all said Ruby would replace all other programming languages, but here we are 20 years later, and it hasn't even managed to wipe out Perl (the language it was designed to replace).

1

I wasn't aware it was out of beta, but does it have the sheer number of libraries of Java?

Of course not - Rust is barely a year old, and Java has been around for decades. Rust won't have the same no. of libraries until Java is well and truly dead.

The better question is whether it has libraries for whatever you need to build, and that's improving steadily. (Not to mention that you can always use C libraries, same as in D.)

That said, I haven't done much with it because I find the pointer system to be too constrictive. I wish they hadn't removed the GC pointer type from the language - it made it possible to use Rust as a high level language without worrying about ownership semantics. You can still do it with a template (similar to C++), but the syntax is much uglier.

0

C++ is still under development, Haskell is still under development, Swift is still under development, Go is still under development...

Start writing things in it now, you can just update your code later to be better, it already has a stability guarantee (1.0 is out)

0

My comment was poorly worded. What I meant by "under development" is that it isn't a mature language like C++, Haskell, etc. (Go/Swift are not mature) with a lot of libraries already written.

3

Python. I was resistant and skeptical at first, but it is just so natural, great community, good philosophy.

3

Having been a C programmer for a long time, I finally dove headfirst into python a while ago. It's great, it is so nice to just be able to tell the computer what to do and it does it. I've been able to experiment with algorithms without having to worry about syntactical 'gotchas'. I believe that learning python has made me a significantly better programmer in a relatively shorter amount of time.

2

Clojure is my favorite lisp. The macro system taught me a new way to think of a program.

2

JavaScript, weirdly enough. When it was pointed out that anything you use function () { ... }, its really just an anonymous function, lambdas in Python, Java, etc. just started making sense.

1

Just wait until ES6 is fully implemented and you don't have to use var self = this or var that = this because arrow functions (e.g. var x = (a,b) => a + b) don't create their own this reference.

1

Go. It got me back into systems programming, and renewed my interest in C as well.

0

I've been hearing a lot about go lately. What is it good for?

0

Any program with a lot of concurrent stuff going on, like a multi user server.

1

Honestly Assembly, more specifically, ARM Assembly. This helped me learn a lot about optimization on a bit-wise level that some compilers don't do necessarily. My C++ has gotten much better now that I understand (at a basic level) how to optimize for memory and others.

But I wouldn't recommend it, every other person I talked to hated working with anything below C. I feel like I'm the only exception that wanted to learn at that level.

1

Javascript. Now I enjoy programming.

1

Labview. Doing everything graphically really felt alien after doing Java through school. Then I accumulated a library of frequently used modules and I can't go back. Everything else takes too long to complete.

1

For me it's Lisp and then Python. C# may pay the bills but I still usually go back to Python to play around and learn something.

1

PHP. It showed me that quality is overrated and that nobody really cares.

0

Objective-C. I've tried a couple languages and never felt really comfortable with what I was doing, until I found a pleasant home with Obj-C. And maybe Java, it wasn't until we learned that in school that I actually started understanding object oriented stuff and MVC

0

Classic Visual BASIC, it introduced me to drag and drop controls for GUI forms. It made programming fun again by making it easier to make menus and forms and other things. Also VBA in MS-Office macros.

0

C# and all the technologies from Microsoft, it's not like I am a hater but nothing comes close to Visual Studio and C# and all other Microsoft technologies, I wish they give us more freedom for dangling pointers and low level access with C#, and especially directX like stuff.

0

I wish they give us more freedom for dangling pointers and low level access with C#, and especially directX like stuff.

You're free to use pointers to read and write unmanaged memory in C#.. You just need to mark the method as unsafe. If you want more control between managed and unmanaged memory you need to use System.Runtime.InteropServices.Marshal which can turn unmanaged memory segments into .NET reflected types, and do other stuff like allocate unmanaged heap memory (default in C# for pointers is via the stackalloc operator, since that's what you'll be using them for generally anyway) and stuff like that. There are no restrictions to pointers in C#, but you just have to be aware that C# is not C++, and managed and unmanaged memory are two different things :P

0

I tried to do some asm and I realized I was a retard. Made me feel stupid and discouraged me for quite a while.

0

The replies here are so cool!