Looking for a new programming language to learn

Deleted member 373057

Well-Known Member
OP
Member
Joined
Oct 5, 2015
Messages
462
Trophies
0
XP
561
Country
Canada
I'll get to the point: I want to learn another programming language well. Right now I would say I'm pretty good at: C and Python, although I've used Java and C++ quite a bit as well.

I was thinking of trying Rust or D, but wasn't entirely sure. Maybe a functional language like Haskell? I really don't know.

Hit me up with a language (and why), folks.
 

Deleted member 373057

Well-Known Member
OP
Member
Joined
Oct 5, 2015
Messages
462
Trophies
0
XP
561
Country
Canada
Dunno, depends on what you want to do. Programming languages aren't that different from each other once you learn a couple of them, but some are more fit for a certain purpose.
I'm more of a low-level programmer, but I want to learn something different. If I'm completely honest I want to learn a functional language. Can you recommend any?
 

Rusb

Well-Known Member
Member
Joined
Apr 17, 2014
Messages
178
Trophies
0
XP
958
Country
I would go with x86 inline assembly and x86 assembly.

Why?
The most obvious reason: Optimization.
Yes, the compiler does a good job optimizing code but it's not always magic. Learning machine code can be helpful for:

-Understanding at a low level how things work.
-Introducing you to OS/microsystems development
-Speedup programs
-RE, is not only useful for hacking purposes (modding etc...) but sometimes you have to debug things that doesn't have debug symbols nor you have the source... have fun.

And obviously, the most important part. SIMD.

The "normal code optimizations" are done quite well by te compiler, but the compiler usually don't use SIMD. So if you learn to use that instructions (Trust me, is not easy because the documentation in some cases are a little... (hello arm))
you can speedup things to run loooot faster with SIMD, there are restrictions to the use of that instructions but you can learn them on the go.

(Note that there are macros for use SIMD without assembly)

Haskell is a good PL to learn, different and pretty fast.


P.D. Just don't try to build ALL in assembly, use C/C++, you can create symbols in a .s (assembly code) and then compile it and use the symbols (functions, etc...) directly on the c/c++ code.
Also, inline asm is a good way to program, but remember, portability will not be possible to other archs. So you would like to have two types of functions, the assembly one and code one, use IFDEF or something like that
 
Last edited by Rusb,

Deleted member 373057

Well-Known Member
OP
Member
Joined
Oct 5, 2015
Messages
462
Trophies
0
XP
561
Country
Canada
I would go with x86 inline assembly and x86 assembly.

Why?
The most obvious reason: Optimization.
Yes, the compiler does a good job optimizing code but it's not always magic. Learning machine code can be helpful for:

-Understanding at a low level how things work.
-Introducing you to OS/microsystems development
-Speedup programs
-RE, is not only useful for hacking purposes (modding etc...) but sometimes you have to debug things that doesn't have debug symbols nor you have the source... have fun.

And obviously, the most important part. SIMD.

The "normal code optimizations" are done quite well by te compiler, but the compiler usually don't use SIMD. So if you learn to use that instructions (Trust me, is not easy because the documentation in some cases are a little... (hello arm))
you can speedup things to run loooot faster with SIMD, there are restrictions to the use of that instructions but you can learn them on the go.

(Note that there are macros for use SIMD without assembly)

Haskell is a good PL to learn, different and pretty fast.


P.D. Just don't try to build ALL in assembly, use C/C++, you can create symbols in a .s (assembly code) and then compile it and use the symbols (functions, etc...) directly on the c/c++ code.
Also, inline asm is a good way to program, but remember, portability will not be possible to other archs. So you would like to have two types of functions, the assembly one and code one, use IFDEF or something like that
Thanks, appreciate the response.
 

The Real Jdbye

*is birb*
Member
Joined
Mar 17, 2010
Messages
23,182
Trophies
4
Location
Space
XP
13,693
Country
Norway
I'll get to the point: I want to learn another programming language well. Right now I would say I'm pretty good at: C and Python, although I've used Java and C++ quite a bit as well.

I was thinking of trying Rust or D, but wasn't entirely sure. Maybe a functional language like Haskell? I really don't know.

Hit me up with a language (and why), folks.
C#? It's quite similar to Java in many ways so it should be a breeze to learn.
I find it really quick to code in, which is why I like it so much.
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,282
Country
United Kingdom
"Rust or D ... Haskell"
Don't do it. It sounds like you have already made it so no great need to pick either an academic language or one that failed to launch (Rust and D certainly have their fans and if you are needing to get into "safe" programming then there are worse choices). I try always to pick a language that people know and use, and by similar token I would considerably rather have an obfuscation contest than watch someone try to do something in an esotetric language.

Personally I would double down on what you already know -- bit hazy on crypto and security? Sort that out. Don't know how to make awesome GUIs? Any of those languages do well for it. Don't know your 3d APIs? Well now, I am not sure about python but the rest can speak to directX or opengl well enough. You say you have done a bit of C++ and I will believe it, however a bit of C++ is enough to hang you if you have to use it in anger. There is some really subtle stuff it brings to the table and if you are mainly a C kind of guy it definitely will have things to trip you up. Assembly is not without its uses, especially if you want to go low level, debugging, hacking and such but it is increasingly sidelined (2011 or so was it when compiler intrinsics were introduced and basically bumped inline assembly into history) as it is really hard to use with a lot of modern security.

That said I might float the idea of avisynth if you are mainly looking for something fun
http://avisynth.nl/index.php/Main_Page
It is an amazing video editor but being script based not so many consider it. Said scripts make it hellishly powerful though, and being scripts are inherently self documenting, reusable and adaptable at any level you like. People tell me open source can't compete with adobe, apple and sony offerings and to that I say pah, until we start needing the crazy 3d modelling and tracking stuff (though even there you are not without options) I will go toe to toe with you using avisynth.
 

wolfmankurd

Well-Known Member
Member
Joined
Jul 20, 2013
Messages
270
Trophies
0
Age
34
XP
292
Country
Verilog, get yourself a cheap FPGA/CPLD like the MAX II from Altera as cheap as 10 bucks for board + programmer. Download Quartus II web (for free) get the version that supports MAX II / EPM240 devices and enter a new world.
If you can't be bothered to learn a HDL but want to broaden your horizon learn a more functional programming language maybe Haskell, or a lisp, maybe both with Clojure? Both have excellent free online books which are considered the definitive beginner text.

Finally no "what language should I learn" discussion would be complete without mentioning Rust, they have a great community and documentation too.

Personally I'd recommend all programmers experience a Lisp, functionally programming (like Haskell) and Clojure is a good way to do both. I also recommend Rust as a "language of the future"(TM).

Why? Well I wont lie to you and say your first job will have you banging out sythenesisable logic or even have you write some Haskell. But knowing about this programming paradigms **will** make you a better programmer and improve your C and Python (if you want them to be your home languages). If you wrestle with Rusts compiler for 6 months you will definitely learn a thing or two about what makes safe concurrent code and how to write explicit code making your intention clear to other programmers and of course the compiler. It compiles down to comparable speed as C/C++.

Other than Rust every language I've mentioned is functional, while HDLs tend to be imperative you can't really think of what they produce as imperative on a larger scale (what happens inside a clocked block is imperative but the interactions are functional -- i.e. combination logic in general is functional). In a way with HDLs you think functionally, write imperatively and make something that runs functionally...
 
Last edited by wolfmankurd,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Sorry for accidentally bending over