Bitcoin Forum
December 03, 2016, 04:42:49 AM *
News: Latest stable version of Bitcoin Core: 0.13.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: « 1 2 3 4 [5]  All
  Print  
Author Topic: What programming language to learn?  (Read 11820 times)
Furyan
Full Member
***
Offline Offline

Activity: 175



View Profile
July 19, 2011, 10:41:27 PM
 #81

You are all lightweights.

Programming languages. Posh!

REAL programmers encode their bits directly on the substrate!
1480740169
Hero Member
*
Offline Offline

Posts: 1480740169

View Profile Personal Message (Offline)

Ignore
1480740169
Reply with quote  #2

1480740169
Report to moderator
1480740169
Hero Member
*
Offline Offline

Posts: 1480740169

View Profile Personal Message (Offline)

Ignore
1480740169
Reply with quote  #2

1480740169
Report to moderator
1480740169
Hero Member
*
Offline Offline

Posts: 1480740169

View Profile Personal Message (Offline)

Ignore
1480740169
Reply with quote  #2

1480740169
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
martin
Full Member
***
Offline Offline

Activity: 150



View Profile WWW
July 19, 2011, 11:22:06 PM
 #82

I quite like the idea of what 7 languages in 7 weeks tries to do, although I wouldn't have picked those seven languages they're a pretty good selection.

My personal pick for a language a week would be (in order):

  • Python
  • C#
  • Haskell
  • C# (LINQ)
  • Erlang
  • C# (Rx)
  • Lua

Python is a nice simple language to start with, it introduces object orientation, first class methods and a load of the functional things which are increasingly popular these days.

Then you've got C# which is something of the core to this whole thing, mostly for LINQ and Rx which are used as demonstrations of other things (I'll get to that later). Make sure to cover generics since they're pretty vital to both Rx and LINQ (and the entire of C# in general)

Haskell is a beautiful language, it's a bit of a pain to learn if you try and come at it from a "normal programming language, you'll wonder why it can't do the simplest things like loops and assignment. But trust me, once you get the hang of Haskell you'll love it, and it will influence how you program in many other languages.

C# (LINQ), LINQ is Language INtegrated Query in C#, it allows you to do functional style programming with C# objects. It's sort of like using Haskell in C# code with C# objects - it's a nice demonstration of how functional paradigms can fit wonderfully into more classic languages.

Erlang is a wonderful language for concurrency and distributed processing, everything is based around concurrent processes and message passing (which, of course, works rather well over a distributed system exchanging packets (messages).

C# (Rx), Reactive eXtensions is a library for C# which builds upon LINQ to provide filtered message streams... just like concurrent processes passing messages. Once again as with LINQ this is a nice demonstration of how a concept like erlang can be made to work well with more classical languages.

Lua, this is a bit of a curveball. Lua is a weird language, it's pretty much paradigmless, you can do pretty much anything you've done in the previous languages in Lua... but you'll have to write the *paradigm* first. This makes it a great way to understand those little niggling details of the things. Try implementing an enumeration and query framework like LINQ/haskell in Lua and I guarantee you'll learn something Wink

As for *how* to learn these languages, well I'm really not sure what to recommend, perhaps trawl project euler for suitable problems for each paradigm. I usually just pick up a language and start using it when I need it - so although I only *know* 4 or 5 languages really well, I'm confident in having a toolkit of 10 or 20 languages which I can pick up when I need them. Hopefully this 7 languages in 7 weeks thing will give you the same confidence just to pick up a language to use it.

bitplane
Sr. Member
****
Offline Offline

Activity: 321

Firstbits: 1gyzhw


View Profile WWW
July 19, 2011, 11:33:01 PM
 #83

I quite like the idea of what 7 languages in 7 weeks tries to do, although I wouldn't have picked those seven languages they're a pretty good selection.

7 languages in 7 weeks? Why not Japanese, Spanish, Italian, English, Latin, Mandarin, German and French in 7 weeks? A programming language worth learning is something you learn to think in, which means committing several years to its mastery. Something you can learn in a week is not something worth learning. Do you actually know anyone who learned Haskell or even C in a week?!

http://norvig.com/21-days.html
martin
Full Member
***
Offline Offline

Activity: 150



View Profile WWW
July 20, 2011, 12:41:30 AM
 #84

I learnt haskell in the 48 hours before my exam, which was apparently a very hard exam and I achieved the top classification in Wink

I learnt python in a week when I wanted to build a site for appengine.

I learnt every nook and cranny of java (shudder) in a 12 week group software development coursework project at uni.

The point here is the language that had the most impact was haskell, even though I learnt it the fastest - once I understood the concept the remaining two weeks *after* the exam I spent playing with it taught me very little beyond the precious "aha" moment when I suddenly "got it". The point of 7 languages in 7 weeks is to throw a load of different concepts at you so they all mix together in your head and you're comfortable using the best tool for the job. If you spend several years learning how to use a language and a paradigm you become extremely attached to both of them and start using it for jobs which it isn't ideally suited for.

Obviously once the seven weeks are up you should spend more time learning the languages and paradigms you like in detail, but the important thing is understanding the concepts behind the paradigms (maximising the "aha" moments) not the exact syntax of each language.

What's the use of learning the basics of a load of languages you'll never use any more? Well For example, I no longer use Haskell but still consider it one of my favourite languages because I use LINQ every day, I only love LINQ so much because of what Haskell taught me about the power of that kind of thing. I also develop a lot of networking stuff, and what I learnt from fiddling with erlang for about 12 hours (I never even really wrote a program in it, I just read a lot of the documentation and understood the concept) has a huge influence on that.

99Percent
Full Member
***
Offline Offline

Activity: 179



View Profile
July 21, 2011, 03:44:22 PM
 #85

Has anyone mentioned Free Pascal?

I have started something: http://code.google.com/p/fpbitcoin/ but Its running on low piority at the moment. I hack on it a few hours every few days. I'm doing this (mostly on my own) as an attempt to (a) learn and understand every little detail of the bitcoin protocol and (b) to document for me (and others) what I have found.

If everything succeeds then the end result will be a lightweight cross platform bitcoin client (a non-gui unit implementing the bitcoin protocol and a rich graphical client to manage a wallet) that does not suffer from the many problems of the "official" client. But this might take some time until its usable since I'm only working part time on it and I want to do most of it myself (for the learning effect).


Very interesting. I will be following it and hopefully contribute some. I believe there is an ssl_openssl_lib.pas that handles compilation under different OS like win and linux, you might want to use instead (ararat synapse uses it).
grondilu
Legendary
*
Offline Offline

Activity: 1134


View Profile
July 21, 2011, 03:52:51 PM
 #86

Haven't read all this thread, but here is my opinion:

- C is the most influential modern programming language.  You should at least read Kerningam and Rithie's book:  "The C programming language", and trie to write a few C programs.
- python is a widely popular language.  It's very easy to learn and it's a good introduction to even more modern programming languages, which use concepts such as garbage collection and just-in-time compiling.  It's also an easy way to get familiar with object programming.
- some knowledge of java, javascript and PHP can not be avoided if you want to focus on web programming.


- C++ is nice but tough to master.  I personnaly thought I knew C++, until I read Satoshi's code Smiley
Man From The Future
Full Member
***
Offline Offline

Activity: 126


View Profile
July 21, 2011, 05:37:39 PM
 #87

If the question was, "which language is not to learn?" than I would know the answer: "PHP".


And why?

If I answer that I would probably offend a lot of people. So,  I'll pass on it this time.

Also, last time I checked axioms do not require proof.  Shocked



You started the troll...

My posts are reflection of my personal experience... which is rather relevant and extensive... if you do not like it feel free to ignore.

There is no bad language only bad programmers. PHP has the best documentation ever, the most servers running it and since version 5 allows object oriented programming... Sure it offers so much freedom that if you do not code clean your program will be a mess...

True, but somehow bad programmers tend to gravitate to PHP. It is like a bad neighbourhood which is best to avoid...

Friends do not let friends to do PHP, you know.


Bad coders don't make the language bad? Although it has no consistency in naming of built-ins, which is annoying, and no threading, which is really annoying, and tells you "Stop trying to use PHP for this you should be using something else", which can be annoying until you learn something else. The discussion in this thread makes me want to learn python, and mess around with C# some more.

Although I know I won't get good at them because I have nothing to code just now that I want to code in them, but I hope I shall eventually...
martin
Full Member
***
Offline Offline

Activity: 150



View Profile WWW
July 21, 2011, 08:33:12 PM
 #88

I have nothing to code just now that I want to code in them, but I hope I shall eventually...

Trying writing a program that aggregates streams of bitcoin financial data using Rx and then selects "interesting" things out of the combinations of these different data streams. That's how I learnt Rx Wink

Pages: « 1 2 3 4 [5]  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!