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 u/Devcam 14 Jul 2015 22:15
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 u/LoungeAbout 14 Jul 2015 23:25
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 u/erki 14 Jul 2015 23:34
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 u/Devcam 14 Jul 2015 23:39
That's a nice example of just how useful LINQ expressions can be! I agree, its very natural.
0 u/Cuddlefluff 17 Jul 2015 09:12
for(Person friend : friends.stream().filter(x -> x.Age > 25).collect(Collectors.toList()))LINQ is so much more elegant
3 u/a_of_s_t 15 Jul 2015 02:33
C# is a language everyone hates until they try it. I think it's a great language that just feels right.
9 u/spjt 15 Jul 2015 01:44
Javascript. I used to enjoy programming.
1 u/RevanProdigalKnight 15 Jul 2015 04:04
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
letin 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 u/RyFy 15 Jul 2015 07:34
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 u/RevanProdigalKnight 15 Jul 2015 13:25
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 becomesvar. No point in using a transpiler for something a simple find and replace can fix.3 u/roznak 14 Jul 2015 21:56
F# actually. I had to rewire my brain but I now develop more modular programs.
2 u/nsfwalias [OP] 14 Jul 2015 21:57
Yes, this is on my list to look at. I wonder what it might give beyond Lisp or Haskell though - any idea?
0 u/RickJanes 14 Jul 2015 23:25
dude, i know rite??? FSharp is the stuuuuufffffff
3 u/un_salamandre 14 Jul 2015 23:20
Haskell. Made me google "Maybe in C++?"
1 u/rdnetto 15 Jul 2015 13:06
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 u/iopq 15 Jul 2015 02:24
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 u/RevanProdigalKnight 15 Jul 2015 04:07
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 u/RyFy 15 Jul 2015 07:36
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 u/RevanProdigalKnight 15 Jul 2015 13:28
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 u/rdnetto 15 Jul 2015 14:19
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 u/iopq 16 Jul 2015 03:47
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 u/RevanProdigalKnight 16 Jul 2015 05:20
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 u/BadSushi 15 Jul 2015 03:15
Python. I was resistant and skeptical at first, but it is just so natural, great community, good philosophy.
3 u/falkensMaze 15 Jul 2015 18:02
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 u/GenghisSean 14 Jul 2015 23:20
Clojure is my favorite lisp. The macro system taught me a new way to think of a program.
2 u/PhaZer0 15 Jul 2015 00:05
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 u/RevanProdigalKnight 15 Jul 2015 04:09
Just wait until ES6 is fully implemented and you don't have to use
var self = thisorvar that = thisbecause arrow functions (e.g.var x = (a,b) => a + b) don't create their ownthisreference.1 u/Urtie 14 Jul 2015 23:26
Go. It got me back into systems programming, and renewed my interest in C as well.
0 u/FFX01 15 Jul 2015 00:35
I've been hearing a lot about go lately. What is it good for?
0 u/Urtie 15 Jul 2015 15:45
Any program with a lot of concurrent stuff going on, like a multi user server.
1 u/OTL_ 15 Jul 2015 00:18
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 u/dchem 15 Jul 2015 06:16
Javascript. Now I enjoy programming.
1 u/Silver_Tube 15 Jul 2015 15:40
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 u/framstick 16 Jul 2015 04:49
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 u/stesch 16 Jul 2015 20:08
PHP. It showed me that quality is overrated and that nobody really cares.
0 u/PM_ME_WHAT_YOU_WANT 14 Jul 2015 23:21
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 u/OrionBlastar 14 Jul 2015 23:43
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 u/qmrwqr 15 Jul 2015 03:13
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 u/Cuddlefluff 15 Jul 2015 11:22
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 useSystem.Runtime.InteropServices.Marshalwhich 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 thestackallocoperator, 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 :P0 u/ShowMeYourGenitals 15 Jul 2015 03:59
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 u/catsup 15 Jul 2015 18:45
The replies here are so cool!