Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

I need to branch off and expand my mind, any suggestion on new language


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
15 replies to this topic

#1 D.Chhetri   Members   -  Reputation: 174

Like
0Likes
Like

Posted 20 August 2011 - 10:30 AM

For about 2-3 years, I've been in school, I have mainly used C++/Java and some MIPS. I feel like I've been exposed to the same kind of OOP thinking and don't really know what else is out there. What would you suggest one to learn in order to expand one's way of thinking about problems. I thought about some language like maybe ruby or lisp or perl. I just need some advice. Thanks.
Edge cases will show your design flaws in your code!
Visit my site
Visit my FaceBook
Visit my github

Sponsor:

#2 King Joffrey   Members   -  Reputation: 150

Like
0Likes
Like

Posted 20 August 2011 - 10:45 AM

Learning a programming language is like learning a linguistic language. Being a software engineer is like being an author. Learning Spanish doesn't make you an author, learning French doesn't make you an author, writing books makes you an author, and the more you write, the better you get. It's useful to have languages under your belt but IMO developing your software emgineering skills is extremely important. IMO having personal projects under your belt and on your CV demonstrates your real world competency and makes you much more employable for a variety of reasons. At that point your language choice becomes near-insignificant.

Sorry if that's way off topic but i thought I'd mention it nonetheless.

#3 Telastyn   Members   -  Reputation: 3332

Like
1Likes
Like

Posted 20 August 2011 - 11:01 AM

Learning a programming language is like learning a linguistic language. Being a software engineer is like being an author. Learning Spanish doesn't make you an author, learning French doesn't make you an author, writing books makes you an author, and the more you write, the better you get. It's useful to have languages under your belt but IMO developing your software emgineering skills is extremely important. IMO having personal projects under your belt and on your CV demonstrates your real world competency and makes you much more employable for a variety of reasons. At that point your language choice becomes near-insignificant.

Sorry if that's way off topic but i thought I'd mention it nonetheless.


[edit] While it's true that practice is required to make you a good programmer, learning a distinctly different language (like mandarin vs english) will change how your brain interprets language and gets you concepts that simply don't exist in your native language, making learning new ones easier; just like programming languages. Learning distinctly different languages is a boon to any programmer.


For the OP: Haskell.

#4 King Joffrey   Members   -  Reputation: 150

Like
0Likes
Like

Posted 20 August 2011 - 11:15 AM

This is patently false.

In what respect?

#5 NightCreature83   Crossbones+   -  Reputation: 1173

Like
0Likes
Like

Posted 20 August 2011 - 05:05 PM

Learning a programming language is like learning a linguistic language. Being a software engineer is like being an author. Learning Spanish doesn't make you an author, learning French doesn't make you an author, writing books makes you an author, and the more you write, the better you get. It's useful to have languages under your belt but IMO developing your software emgineering skills is extremely important. IMO having personal projects under your belt and on your CV demonstrates your real world competency and makes you much more employable for a variety of reasons. At that point your language choice becomes near-insignificant.

Sorry if that's way off topic but i thought I'd mention it nonetheless.


Like someone mentioned above there are a few different programming paradigms and learning languages that use these will give you a new way to look at things. Haskell, Lisp and all its derivatives rely mostly on recursion and list manipulation, Prolog forces you to write logic statements and sets and relies on logic and set algebra.


So learning another language outside of your current programming paradigm has advantages as it gives you a new way to look at problems and come up with solutions.


Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2

#6 ApochPiQ   Moderators   -  Reputation: 7768

Like
0Likes
Like

Posted 21 August 2011 - 04:28 AM

I second Haskell.

#7 d128562   Members   -  Reputation: 108

Like
0Likes
Like

Posted 21 August 2011 - 08:04 AM

C# or Scala?

#8 Serapth   Members   -  Reputation: 3283

Like
0Likes
Like

Posted 21 August 2011 - 08:16 AM

Functional all the way, if todays procedural langauges stop being the norm, it's functional that will replace them.

I would say either Haskell or F#. F# would be handy because you would have access to .NET libraries.


That said, for me after 15 years of programming this way, functional programming is a mind bender. Just getting the gist of LINQ is enough of a fight.

#9 Luckless   Members   -  Reputation: 994

Like
0Likes
Like

Posted 22 August 2011 - 08:39 AM

Consider Python.

Very simple language to pick up, and very flexible. Personally I'm doing around 75-80% of all my code in python, simply because it works and is easy to use. The rest tends to be either domain specific languages, or rewrites of segments of Python code that simply needed better performance.


And a third for Haskell. It is an interesting language. I picked away at it, but got side tracked from learning more.
Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.

#10 Bregma   Members   -  Reputation: 2773

Like
0Likes
Like

Posted 22 August 2011 - 09:32 AM

There are only two programming languages: Fortran and Lisp. Everything else is a copy.

I didn't say they weren't improvements.

Oh, OK, there's also Prolog. When I was in school it was the New Silver Bullet that was going to be the Solution To Everything and We Would All Be Programming In It When We Graduated. I'm not sure if you can find it any more. You can definitely find Fortran and Lisp.
Stephen M. Webb
Professional Free Software Developer

#11 A Brain in a Vat   Members   -  Reputation: 305

Like
0Likes
Like

Posted 22 August 2011 - 10:13 AM

Functional all the way, if todays procedural langauges stop being the norm, it's functional that will replace them.

I would say either Haskell or F#. F# would be handy because you would have access to .NET libraries.


I'm curious why you feel this way. I've always felt that the imperative model is higher level than the functional model.

The human brain, at its very base level, certainly follows the functional model. In a super simplified sense, our brain really is one big mapping of inputs to outputs, i.e. a function.

When we have to accomplish tasks, however, we often work at a higher, imperative level. I know that when I get in my car, the first thing I do is close the door. Then I put my seatbelt on. Then I turn the key. etc. My functional brain takes care of all the low-level mapping of those imperatives.

Moreover, when we tell someone else how to accomplish a task, we obviously do it using the imperative model. This communication is exactly what we're doing when we program a computer. We are telling the computer the steps to undertake in order to accomplish some task. It happens that our computers, just like our brains, at their lowest level operate with circuits that are implementations of some elaborate function, mapping inputs to outputs. But at a higher level, most of us program our computers in an imperative way. In fact, even those of us who write code in functional programming languages eventually compile our code into imperative machine code.

So, if it doesn't make sense to tell your friend how to drive a car in a functional way, why do you think it makes sense for us to instruct our machines in a functional way?

#12 Serapth   Members   -  Reputation: 3283

Like
0Likes
Like

Posted 22 August 2011 - 10:51 AM


Functional all the way, if todays procedural langauges stop being the norm, it's functional that will replace them.

I would say either Haskell or F#. F# would be handy because you would have access to .NET libraries.


I'm curious why you feel this way. I've always felt that the imperative model is higher level than the functional model.

The human brain, at its very base level, certainly follows the functional model. In a super simplified sense, our brain really is one big mapping of inputs to outputs, i.e. a function.

When we have to accomplish tasks, however, we often work at a higher, imperative level. I know that when I get in my car, the first thing I do is close the door. Then I put my seatbelt on. Then I turn the key. etc. My functional brain takes care of all the low-level mapping of those imperatives.

Moreover, when we tell someone else how to accomplish a task, we obviously do it using the imperative model. This communication is exactly what we're doing when we program a computer. We are telling the computer the steps to undertake in order to accomplish some task. It happens that our computers, just like our brains, at their lowest level operate with circuits that are implementations of some elaborate function, mapping inputs to outputs. But at a higher level, most of us program our computers in an imperative way. In fact, even those of us who write code in functional programming languages eventually compile our code into imperative machine code.

So, if it doesn't make sense to tell your friend how to drive a car in a functional way, why do you think it makes sense for us to instruct our machines in a functional way?




Oh, I agree, I actually find functional code extremely low level. The only reason I could see functional being the future is simply market momentum. Functional programming is a first class language feature of newer programming languages like D and F#, while existing languages like C#, C++ ( C++0x), PHP and to a lesser degree, Java have all moved to support first class functions. I believe Python has always supported and to a degree, promoted functional programming (never got heavily into Python, but I recall lambdas being exceedingly important ) With the rise of LINQ, the power of functional programming is easily demonstrated.

I don't actually see it happening, although I do see a blurring of the lines as time goes on, where functional code gets used more and more often.



#13 A Brain in a Vat   Members   -  Reputation: 305

Like
0Likes
Like

Posted 22 August 2011 - 10:59 AM

Oh, I agree, I actually find functional code extremely low level. The only reason I could see functional being the future is simply market momentum. Functional programming is a first class language feature of newer programming languages like D and F#, while existing languages like C#, C++ ( C++0x), PHP and to a lesser degree, Java have all moved to support first class functions. I believe Python has always supported and to a degree, promoted functional programming (never got heavily into Python, but I recall lambdas being exceedingly important ) With the rise of LINQ, the power of functional programming is easily demonstrated.

I don't actually see it happening, although I do see a blurring of the lines as time goes on, where functional code gets used more and more often.


Yeah, I definitely see the usefulness of functional concepts within an imperative framework. For example, you might tell your friend: "Always stay 30ft behind the car in front of you." That's a functional concept.

I think the core framework will continue to be imperative, however, until we no longer are programming programs at all (because programs understand our words and create new programs).

#14 Serapth   Members   -  Reputation: 3283

Like
0Likes
Like

Posted 22 August 2011 - 11:14 AM


Oh, I agree, I actually find functional code extremely low level. The only reason I could see functional being the future is simply market momentum. Functional programming is a first class language feature of newer programming languages like D and F#, while existing languages like C#, C++ ( C++0x), PHP and to a lesser degree, Java have all moved to support first class functions. I believe Python has always supported and to a degree, promoted functional programming (never got heavily into Python, but I recall lambdas being exceedingly important ) With the rise of LINQ, the power of functional programming is easily demonstrated.

I don't actually see it happening, although I do see a blurring of the lines as time goes on, where functional code gets used more and more often.


Yeah, I definitely see the usefulness of functional concepts within an imperative framework. For example, you might tell your friend: "Always stay 30ft behind the car in front of you." That's a functional concept.

I think the core framework will continue to be imperative, however, until we no longer are programming programs at all (because programs understand our words and create new programs).


In some ways, the additional of functional capabilities to procedural languages could spell the deathbed ( reduced usage ) of pure functional languages like Haskell, Erlang and F#. I mean, if you can get all of the upside of your language of choice and a more mass market language with all of the benefits that entails ( bigger talent base, more supporting literature, wider adoption, etc ), why would you use a specialty language anymore? Then again, I suppose this is why general purpose languages like C++ and C# thrive, while specialized languages stay in the niche, with the possible exception of the prototype based Javascript and frankly it's success has more to do with being at the right place at the right time with the right features and political support than any particular merit of the language itself.

#15 Telastyn   Members   -  Reputation: 3332

Like
0Likes
Like

Posted 22 August 2011 - 11:27 AM

OT: Functional aspects may increase in languages, but I cannot see functional languages as they are now; or even the functional programming paradigm becoming commonplace. It's just too weird. You ask people how to do something, they'll give you lists of instructions. If you ask people what something is, they'll give you its components and traits. Programmers we have now can't even do that effectively. Increasing the level of difficulty isn't going to do anyone any good.

In some ways, the additional of functional capabilities to procedural languages could spell the deathbed ( reduced usage ) of pure functional languages like Haskell, Erlang and F#.


F# isn't a pure functional language.

I mean, if you can get all of the upside of your language of choice and a more mass market language with all of the benefits that entails ( bigger talent base, more supporting literature, wider adoption, etc ), why would you use a specialty language anymore?


Because some specialty languages like Erlang can provide many guarantees and/or optimizations because of their specialization.

#16 ApochPiQ   Moderators   -  Reputation: 7768

Like
0Likes
Like

Posted 22 August 2011 - 01:20 PM

Functional programming isn't about "higher" or "lower" levels of abstraction than imperative programming. It's about moving along a different axis, one that most people's brains are simply untrained in. The point of learning FP is to stretch your mind so that you have a larger repertoire of techniques to draw upon when solving problems.

There are many analogues in other fields, including music, writing, cinematography, visual arts, sculpture, practicing law, running a business... the more techniques you have available, the more effective you will be. This holds true in programming, and learning functional techniques is a great example.

Put another way: learning FP is valuable precisely because it is not a naturally obvious way to think about most problems.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS