Bitcoin Harbor
Newbie
Offline
Activity: 34
Merit: 0
|
|
July 11, 2011, 10:41:39 PM |
|
If you want to work on the details of Bitcoin itself, of course, learn C. If you want to build anything that needs to be as efficient and secure as humanly possible, there's just no other choice.
Given OP's needs, however, I say definitely Python. I know many of you are old hands at doing web work with PHP and think it's the only way to go. I strongly suggest you check out Django. It's extremely powerful, and anyone with a working knowledge of Python can pick it up and get running, and the sky is the limit in terms of the complexity of what you can build. Needless to say, Bitcoin Harbor is Django-based, and it's making our lives quite easy for the new features we're rolling out.
OP was also interested in writing smaller scripts, which Python is great for. It's not "just" a scripting language, and you can write very "real" code with it once you know what you're doing, but it can certainly be used for scripting and has a fairly gentle, but deep, learning curve.
Nor do I believe that learning Python and learning "core programming concepts" are necessarily inconsistent at all. I studied CS in college, I'm fluent in C/C++, I remember some Java, I've worked in assembly. While low-level skills are good to have, you CAN still apply them in a high level language - in fact, you'll never be truly fluent in a language like Python until you understand what it's doing underneath the hood.
It's also my opinion that high-level languages teach you ways of thinking that can make you incredibly productive, i.e. functional programming. Specifically I think Python is gateway drug to Haskell, and Haskell is the best rush a coder can get - though it's arguable at best whether you can use it for web work.
-Tristan
|
|
|
|
timsmith
Newbie
Offline
Activity: 27
Merit: 0
|
|
July 11, 2011, 10:44:13 PM |
|
Has anyone mentioned Free Pascal? It has an IDE and it can virtually do anything and natively with practically any CPU or O/S. For GUI applications you can use Lazarus IDE and practically most widget sets. Its fully open sourced.
It has a rich ancestry with Delphi and Turbo Pascal, with tons of open source libraries.
Easy to learn, readable code, object oriented, and simply rock solid fast compiled native executables like C, or C++.
I am thinking of making a bitcoin client port to Lazarus, if only I had some time...
There's a lot to be said for the Pascal based languages. They teach you good practices and principles. You can achieve 99% of the speed and efficiency of compiled C without the high chance of things like memory leaks. The only problem is that no one really uses Pascal out in the real world, as C-syntax won the battle for popularity. And unfortunately, the Pascal high-level syntax can be confusing when shifting between languages (all future variables having to be declared at the start of functions etc.) I'd definitely recommend Pascal/Delphi as a language to learn if you want to learn about programming. But don't expect to be contributing to projects any time soon. It's a shame, as it's a good language really.
|
|
|
|
k
|
|
July 11, 2011, 10:55:25 PM |
|
i'm similar to the OP and bitcoin has rekindled an interest in learning some coding. I decided to try to learn python because I saw some of the python scripts like the bitcoin tools created by Gavin Andresen. I thought it was as good a place as any to start.
some good ideas on this thread. thanks all. good luck OP.
|
|
|
|
qbg
Member
Offline
Activity: 74
Merit: 10
|
|
July 12, 2011, 12:30:00 AM |
|
and my favourite is erlang , though in the end it all boils down to 3 logical operations, so, who cares...
NAND is universal, and so is NOR (Minecraft redstone circuits are NOR based). I wouldn't recommend Lisp unless you want to become a computer scientist or to write programs in Emacs. Most people learn to program so they can achieve things, not for the art of programming itself. Python is a language that gets stuff done in very few lines of code, which is what most people want/need.
That's an horrible advice. !. Software quality is decaying because now days the average programmer don't cares enough to properly learn the underlying theory required to make quality software. Instead they just want to "achieve things" or "get things done", as if to acquire knowledge wasn't an achievement in itself. Ignorance of the principles of your work is not an option. Please don't incentive new programmers to continue polluting the software collection with crap. Lucky for you, the main pushers of "Get things done" are companies that need to get the software coding done as quickly as possible for as little money as possible. That means that the "get things done" development is pretty much limited to pay-for software. Your freeware/GNU stuff is still safe Yeah, Lisp has the downside that it is so powerful that other languages become tedious and time consuming to use. If you want to work on the details of Bitcoin itself, of course, learn C. If you want to build anything that needs to be as efficient and secure as humanly possible, there's just no other choice.
The language that gladly lets you write code with buffer overrun exploits is secure?
|
|
|
|
steelhouse
|
|
July 12, 2011, 02:49:54 AM |
|
i wopuld say
hotbasic freebasic javascript
java, php, python just makes bloatware.
|
|
|
|
ampkZjWDQcqT
Member
Offline
Activity: 70
Merit: 10
GNU is not UNIX
|
|
July 12, 2011, 04:59:23 PM |
|
In some apps only 1.5 times slower than C. Much faster than other good alternatives.
http://c2.com/cgi/wiki?AsFastAsCee.
|
If you found my comment useful please express your gratitude by doing an action of similar magnitude towards a better society. Thanks you!.
|
|
|
Man From The Future
|
|
July 12, 2011, 07:52:36 PM |
|
herp derp php.
Not just for web programming! (Multi-process(PHP has no threading) socket servers in the "wrong" language FTW! )
|
|
|
|
prof7bit
|
|
July 19, 2011, 04:34:05 PM |
|
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).
|
|
|
|
Spacy
|
|
July 19, 2011, 04:39:54 PM |
|
I would start with Python, Java or C++ With PHP/Javascript you learn to write crap code, so don't start with these
|
|
|
|
prof7bit
|
|
July 19, 2011, 04:51:31 PM |
|
Start with a language that is not mainstream, (so don't start with Java, C++, C#, etc.).
The reason is simply because you are much more likely to find people with really deep knowledge who can teach it to you the correct way if you don't use a language that attracts millions and millions of clueless beginners (this is what I call the PHP-effect: The blind leading the blind).
Once you have learned your first pogramming language and know the most important concepts you can easily learn any other language in no time.
|
|
|
|
Vladimir
|
|
July 19, 2011, 05:26:32 PM |
|
If the question was, "which language is not to learn?" than I would know the answer: "PHP".
|
-
|
|
|
indicasteve
|
|
July 19, 2011, 05:52:26 PM |
|
Back in 96 when I took my network engineer skooling, we had one guy come in and showed us how to write a simple webpage in notepad using simple HTML. That was my first experience in making webpages and just learning how to do that was pretty cool. I suggest to anyone who wants to learn this stuff to start by making non dynamic websites just using notepad...forget your dreamweaver and frontpage or whatever and learn how to code a webpage by hand in html.... ooo...and don't forget how to code a proper table cuz you will be doing a lot of those later when you start pulling data out of a database in whatever other languages you will learn.
If you don't know your HTML, there is no point in trying to make a web based app is there?
But like many others here, I do agree PHP can be a nightmare so I'm teaching myself some python and loving it....but you still have to know HTML well to make anything.
|
|
|
|
angelo95
Member
Offline
Activity: 84
Merit: 10
|
|
July 19, 2011, 05:54:41 PM |
|
If the question was, "which language is not to learn?" than I would know the answer: "PHP".
And why?
|
|
|
|
Vladimir
|
|
July 19, 2011, 05:57:34 PM |
|
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.
|
-
|
|
|
angelo95
Member
Offline
Activity: 84
Merit: 10
|
|
July 19, 2011, 08:41:34 PM |
|
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. You started the troll... 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...
|
|
|
|
Spacy
|
|
July 19, 2011, 09:08:50 PM |
|
PHP ... Sure it offers so much freedom that if you do not code clean your program will be a mess...
You answered the question, avoid PHP if you really want to learn clean programming ;-)
|
|
|
|
Vladimir
|
|
July 19, 2011, 09:24:34 PM |
|
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. 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.
|
-
|
|
|
dazedtrader
Newbie
Offline
Activity: 25
Merit: 0
|
|
July 19, 2011, 09:52:05 PM |
|
It's good to see people suggesting languages that push the boundaries like Haskell and Erlang - although I'm not sure I'd recommend them for a novice programmer as the learning curve is probably a bit too much to start with. Once you're ready to have your mind seriously expanded, check them out...
|
|
|
|
Furyan
|
|
July 19, 2011, 10:41:27 PM |
|
You are all lightweights.
Programming languages. Posh!
REAL programmers encode their bits directly on the substrate!
|
|
|
|
martin
|
|
July 19, 2011, 11:22:06 PM |
|
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 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.
|
|
|
|
|