# New to BSD Programming, where to start?



## mlager (Jun 2, 2012)

I'm a long time hardcore FreeBSD user, since the 2.2.x days, and have become pleanty familiar with perl, shell scripting, php, etc. I'm also a heavy VB.NET developer on the Microsoft side. I work a ton with MySQL, MSSQL, SQLite, etc.

I'm really wanting to start programming more extensivly on the FreeBSD platform, and even some Linux stuff. I'm interesting in programming console based applications but also want to do some GUI stuff.

I'm trying to figure out where to start. I don't have any experience in C/C++ and something is telling me that is where I need to start. Do I jump into C++ or do I need to start with C? Should I start with console based apps or should I get into an IDE like Qt Creator?

I'd love to know where to start, I doubt it is going to be a very easy transition from my other languages, but I think I could really develop some amazing stuff once I get good, and I'm all about open source. I'd also love to start taking a look at becoming involved in FreeBSD development too, which is obviously a down the road goal.

Any direction anyone could provide would be awesome. Thanks!


----------



## lme@ (Jun 2, 2012)

What do you like to develop? Choose the right languge for the job.


----------



## fonz (Jun 2, 2012)

mlager said:
			
		

> Do I jump into C++ or do I need to start with C?



As lme said: describe what you'd like to do and we can suggest a suitable language.




			
				mlager said:
			
		

> Should I start with console based apps or should I get into an IDE like Qt Creator?



For a start, be mindful of the distinction(s) between programming language, compiler, IDE and toolkit...

Generally speaking, learning C/C++ never hurts. However, if you're mostly interested in creating userland applications Python is also very useful and probably easier to learn than C/C++.

Again, if you can be more specific about what you want to do we can probably give more specific advice on where to go.

Fonz


----------



## UNIXgod (Jun 2, 2012)

For creating command applications looking at K&R C Programming Language 2nd edition and The UNIX Programming Environment books are worth reading. Ruby is a multi paradigm programming language which have UNIX semantics( awk, tr, grep) and is similar to perl.

C++ is a superset of C. Anything you learn in C is relevant to C++.

Outside of syntax I imagine algorithms and patterns are probably the answer your looking for. The language you pick to implement your projects are determined on the project at hand and what it's goals are. Some people create the initial implementation in a high level language first and when speed or scaling is needed reimplemented it into a lower level language.

Hope you find this info helpful.


----------



## kr651129 (Jun 4, 2012)

I usually stick to C/C++ I like scripting when it's something simple I can just throw together.  I write in Java too but thats for work so I can write on FreeBSD and run on Windows.  I generally write in Eclipse.


----------



## bigearsbilly (Jun 4, 2012)

mlager said:
			
		

> I doubt it is going to be a very easy transition from my other languages,



Nonsense! If you have a lot of other experience it only makes life easier. If you want to get deeper into FreeBSD you must learn C as all the system libraries are in C. Learning C will never do you any harm.

That said, I am in in a high pressure job and mostly I write in Perl because I can get the job done effectively and quickly and Perl can cope with real heavy workloads.

For a real broad spread you should learn lisp! Now there's a language!


----------



## fluca1978 (Jun 4, 2012)

mlager said:
			
		

> I'm really wanting to start programming more extensivly on the FreeBSD platform, and even some Linux stuff. I'm interesting in programming console based applications but also want to do some GUI stuff.



Well, with Perl you can do everything you want, since it works very well on Unix, it is portable and allows you to write GUI programs thru library bindings. Beside that, C is the language you need to work with operating systems, since at least BSD and Linux are all written in C (and assembler, but if you are at this level of detail you are going to get the commit bit  ); other systems are C++, which strictly is not a superset of C but is compatible with it (and therefore knowing C concepts will ease the migration to C++).


----------



## kpa (Jun 4, 2012)

You can't go much wrong with python, it's a language that just makes sense, can do just about anything and can be used to write portable code. I wouldn't use it though if performance is the first priority, that's what C is for.


----------



## expl (Jun 4, 2012)

kpa said:
			
		

> You can't go much wrong with python, it's language that just makes sense, can do just about anything and can be used to write portable code. I wouldn't use it though if performance is the first priority, that's what C is for.



There is Cython that is basically python to C translator, you can (and should) use it when some parts of your python program needs to be faster since it intergrades into normal python program seamlessly. We are using mostly python at work so I end up writing a lot in CPython for tight loop functions with static types.


----------



## wblock@ (Jun 4, 2012)

devel/diffuse is a nice example of a Python application with a GUI.  Also a very nice graphical diff viewer.


----------

