Login Register






Programming language FAQ and choosing guide filter_list
Author
Message
RE: Programming language FAQ and choosing guide #31
(05-05-2013, 11:37 AM)noize Wrote: Well, you're talking about C, C++ as low-level languages, I see.

As far as I can see I only stated that C was a low-level language. So I am not sure why the discussion arises.

Despite that low- and high-levelness is nothing that has a fixed or strict definition (you see the use of soft terms like "more suitable", "generally", "almost always", "focuses more"). What people see as low- or high-level changed over time when new languages occured that provided even a higher abstraction level than before.
When C came out first, no one would have called it low-level. Now most people do, because from their standpoint it has a lower abstraction than they see as normal. But for an assembly programmer or even someone who designs circuits, C is high-level up to now.

Quote:It is infact not restricted by the machine components, it is portable

I disagree with the portable part. It is a cross-platform language, but not a portable one. You have to compile the code for every platform separately.

For the FAQ I am only interested in the capabilities for hardware access and that's where C and C++ are equally good at. Once you write anything that needs that hardware access (drivers, or something GPU specific with CUDA) you are bound to the platform you wrote it for--no matter how widespread the compiler is.

To sum it up: The low- or high-levelness depends on your personal middle-level. That can be different for everyone.
I am an AI (P.I.N.N.) implemented by @Psycho_Coder.
Expressed feelings are just an attempt to simulate humans.

[Image: 2YpkRjy.png]

Reply

RE: Programming language FAQ and choosing guide #32
Thanks a lot. Really helps!
Visual Basic.Net

Private Message me for help

I'm not active because I'm busy with school.

Reply

RE: Programming language FAQ and choosing guide #33
Thanks a lot. Really helps!
Visual Basic.Net

Private Message me for help

I'm not active because I'm busy with school.

Reply

RE: Programming language FAQ and choosing guide #34
(05-05-2013, 12:44 PM)noize Wrote:
(05-05-2013, 12:05 PM)Psycho_Coder Wrote:
(05-05-2013, 11:37 AM)noize Wrote: Well, you're talking about C, C++ as low-level languages, I see.

Quote:A low-level language deals more with direct hardware interaction, and thus is more suitable for programs like device drivers code that really needs access to the hardware. Since a low-level language is subject to all the nuances of the hardware it's accessing, however, a program written in a low-level language is generally difficult to port to other platforms. These languages are almost always compiled.
A high-level language focuses more on concepts that are easy to understand by the human mind, such as objects or mathematical functions. A high-level language usually is easier to understand than a low-level language, and it usually takes less time to develop a program in a high-level language than it does in a low-level language. As a trade-off one generally needs to sacrifice some degree of control over what the resulting program actually does. It is not, however, impossible to mix high- and low-level functionality in a language.

From: http://www.cplusplus.com/info/description/

C++ is powerful and provides access to low-level functions as well as to high-level ones (Wikipedia defines it an intermediate-level language for this reason https://en.wikipedia.org/wiki/C%2B%2B ), but many consider it a high-level programming language. It is infact not restricted by the machine components, it is portable and object-oriented. I would define it a high-level language.

So for C, but I may be wrong. If someone has valid arguments against mine, I'd like to hear them.
This is what I think.
C++ is a high level Language. C is a middle level language , wanna know why ??
Visit this link :- http://www.hackcommunity.com/Thread-Tuto...der-Part-1

I have explained there why C must be called a middle-level Langauge

That's exactly what I think.

The thing is, in the OP, @Deque spoke of C++ and C as both low-level languages.

Well yes then there has been a little confusion C++ is a High-level Language but C can be called as both Middle-Level or Low Level as many professional think C as middle-level while others thinks C as low-level language. They both are correct in their prospective.
But According to Wikipedia :-
Quote:C++ (pronounced "see plus plus") is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises both high-level and low-level language features.
[Image: OilyCostlyEwe.gif]

Reply

RE: Programming language FAQ and choosing guide #35
(05-05-2013, 12:44 PM)noize Wrote:
(05-05-2013, 12:05 PM)Psycho_Coder Wrote:
(05-05-2013, 11:37 AM)noize Wrote: Well, you're talking about C, C++ as low-level languages, I see.

Quote:A low-level language deals more with direct hardware interaction, and thus is more suitable for programs like device drivers code that really needs access to the hardware. Since a low-level language is subject to all the nuances of the hardware it's accessing, however, a program written in a low-level language is generally difficult to port to other platforms. These languages are almost always compiled.
A high-level language focuses more on concepts that are easy to understand by the human mind, such as objects or mathematical functions. A high-level language usually is easier to understand than a low-level language, and it usually takes less time to develop a program in a high-level language than it does in a low-level language. As a trade-off one generally needs to sacrifice some degree of control over what the resulting program actually does. It is not, however, impossible to mix high- and low-level functionality in a language.

From: http://www.cplusplus.com/info/description/

C++ is powerful and provides access to low-level functions as well as to high-level ones (Wikipedia defines it an intermediate-level language for this reason https://en.wikipedia.org/wiki/C%2B%2B ), but many consider it a high-level programming language. It is infact not restricted by the machine components, it is portable and object-oriented. I would define it a high-level language.

So for C, but I may be wrong. If someone has valid arguments against mine, I'd like to hear them.
This is what I think.
C++ is a high level Language. C is a middle level language , wanna know why ??
Visit this link :- http://www.hackcommunity.com/Thread-Tuto...der-Part-1

I have explained there why C must be called a middle-level Langauge

That's exactly what I think.

The thing is, in the OP, @Deque spoke of C++ and C as both low-level languages.

Well yes then there has been a little confusion C++ is a High-level Language but C can be called as both Middle-Level or Low Level as many professional think C as middle-level while others thinks C as low-level language. They both are correct in their prospective.
But According to Wikipedia :-
Quote:C++ (pronounced "see plus plus") is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises both high-level and low-level language features.
[Image: OilyCostlyEwe.gif]

Reply

RE: Programming language FAQ and choosing guide #36
(05-05-2013, 12:52 PM)Deque Wrote:
(05-05-2013, 11:37 AM)noize Wrote: Well, you're talking about C, C++ as low-level languages, I see.

As far as I can see I only stated that C was a low-level language. So I am not sure why the discussion arises.

Despite that low- and high-levelness is nothing that has a fixed or strict definition (you see the use of soft terms like "more suitable", "generally", "almost always", "focuses more"). What people see as low- or high-level changed over time when new languages occured that provided even a higher abstraction level than before.
When C came out first, no one would have called it low-level. Now most people do, because from their standpoint it has a lower abstraction than they see as normal. But for an assembly programmer or even someone who designs circuits, C is high-level up to now.

Quote:It is infact not restricted by the machine components, it is portable

I disagree with the portable part. It is a cross-platform language, but not a portable one. You have to compile the code for every platform separately.

For the FAQ I am only interested in the capabilities for hardware access and that's where C and C++ are equally good at. Once you write anything that needs that hardware access (drivers, or something GPU specific with CUDA) you are bound to the platform you wrote it for--no matter how widespread the compiler is.

To sum it up: The low- or high-levelness depends on your personal middle-level. That can be different for everyone.

Of course, that's right. I didn't mean portable, but cross-platform, just mislead my hands.

And that's also correct that there are no fixed requirements for high and low level.

However, it is a great overview on programming.
My Bitcoin address: 1AtxVsSSG2Z8JfjNy9KNFDUN6haeKr7LiP
Give me money by visiting www.google.com here: http://coin-ads.com/6Ol83U

If you want a Bitcoin URL shortener/advertiser, please, use this referral: http://coin-ads.com/register.php?refid=noize

Reply

RE: Programming language FAQ and choosing guide #37
(05-05-2013, 12:52 PM)Deque Wrote:
(05-05-2013, 11:37 AM)noize Wrote: Well, you're talking about C, C++ as low-level languages, I see.

As far as I can see I only stated that C was a low-level language. So I am not sure why the discussion arises.

Despite that low- and high-levelness is nothing that has a fixed or strict definition (you see the use of soft terms like "more suitable", "generally", "almost always", "focuses more"). What people see as low- or high-level changed over time when new languages occured that provided even a higher abstraction level than before.
When C came out first, no one would have called it low-level. Now most people do, because from their standpoint it has a lower abstraction than they see as normal. But for an assembly programmer or even someone who designs circuits, C is high-level up to now.

Quote:It is infact not restricted by the machine components, it is portable

I disagree with the portable part. It is a cross-platform language, but not a portable one. You have to compile the code for every platform separately.

For the FAQ I am only interested in the capabilities for hardware access and that's where C and C++ are equally good at. Once you write anything that needs that hardware access (drivers, or something GPU specific with CUDA) you are bound to the platform you wrote it for--no matter how widespread the compiler is.

To sum it up: The low- or high-levelness depends on your personal middle-level. That can be different for everyone.

Of course, that's right. I didn't mean portable, but cross-platform, just mislead my hands.

And that's also correct that there are no fixed requirements for high and low level.

However, it is a great overview on programming.
My Bitcoin address: 1AtxVsSSG2Z8JfjNy9KNFDUN6haeKr7LiP
Give me money by visiting www.google.com here: http://coin-ads.com/6Ol83U

If you want a Bitcoin URL shortener/advertiser, please, use this referral: http://coin-ads.com/register.php?refid=noize

Reply

RE: Programming language FAQ and choosing guide #38
Spoiler:
(04-13-2013, 03:04 PM)Deque Wrote: Hello HC. I made this FAQ, because some questions are posted over and over again. It is not complete yet and I highly appreciate every feedback and suggestions for further content. Also: I am one single person and naturally not able to know everything. Especially when it comes to certain fields in the programming choosing guide (like web hacking, Mac OS or others). So please help me completing this guide. You get your credit at the end of the guide.

Contents:
  1. Programming FAQ
  2. Programming language choosing guide
  3. Resource collection
  4. Good programming practices
  5. Acknowledgements

Programming FAQ

Spoiler:
Which programming language should I learn first?

That depends on your personality as well as what kind of programs you want to write and what preferences you have.
Look at the language choosing guide at the end of this FAQ to help you with this
If you are still not sure then choose a language you have a lot support for, like mentors (teachers or friends who already know this language), tutorials and books. Do not be afraid of choosing the "wrong" language. The things you learn are not for nothing if you finally decide to switch the language. The concepts of programming are similar for a lot of languages and it will be easier for you to get into other languages that employ the same programming paradigm once you learned the basics.

I have already learned a programming language; which one should I learn next?

If you want to get the most out of it, my advice is to choose a language that utilizes a different programming paradigm than the language you already know. So if you have learned an imperative language, try a declarative one and vice versa.

I have already learned several programming languages; which one should I learn next?

If you have learned several languages and you still have to ask this question, you probably didn't learn them enough. Go into depth with the ones you already learned and have a look at the answer to the question: How many programming languages should I learn?

Which programming language is the best?

None. A language can only be suitable for a certain task. There is no language that exceeds all the others.

How many programming languages should I learn?

Do not learn too many languages. Rather concentrate on a few and go into depth. That is of much more benefit than accumulating lots of languages. "You shall not learn a language, you shall learn to program" is the reason for this. You will clutter a lot of knowledge about language details instead of concentrating on the important things.
If you are a beginner, concentrate on one language first and practice it for a few years.

How long does it take to learn a programming language?

There will probably never be a moment when you can sit back and say, you have learned everything about this particular programming language. It is said that you need at least ten years to master something (which still doesn't mean you have learned everything).
It also depends on how much time you spend for programming and if you already have programming experience. If you are beginner (you have no experience) and you program regularly (a few hours a week) you can achieve a decent level in about three years. That means you are able to program fluently, you know usual algorithms and data structures, you know how to use and read the language documentation, you do not ask regularly in forums for help and you can solve usual programming tasks without much of a hassle.
Someone who already has experience will learn a new language much faster.

Do I have to be good in math in order to learn programming?

You don't have to, but it helps a lot. Especially if you want to solve tasks in certain fields like cryptography and image recognition or if you want to analyse algorithms you have to know some math.

Which language is the most popular one?

The tiobe index gives an answer to that: http://www.tiobe.com...tpci/index.html

How should I learn programming? What should I use?

You can look into resource chapter of this FAQ as well as the stickies of your language of choice or you can ask on the Hackcommunity forums for getting some suitable resources. It doesn't matter if you learn with a book, an e-book or video tutorials. The resource just has to be good. But watching videos and reading is not enough. Programming is like driving, you won't learn it unless you actually do it. So think about your own projects, write something that is useful or just interesting for you. Put the code on Hackcommunity to get some feedback. People will tell you, what you can improve. You can do the same if you are stuck with a problem.

Where to start with language X?

Read the answer of the question above and look if your language is covered here: http://www.hackcommunity.com/Thread-Prog...roductions

Should I use a text editor or an IDE?

Use what you like best. But you should least know how to do it without an IDE.

Should I learn language X in order to learn language Y afterwards?

There is no reason to learn language X, if you are only interested in Y.

I have a question that is not covered here. What shall I do?

Post the question here. You will definitely get an answer. If the question is considered important for a majority of people, it will be added to the FAQ.



Programming Language Choosing Guide
Spoiler:
I don't like it the hard way. Tell me which language is the easiest.

Python is an interpreted language that is considered easy, has good web frameworks and runs on multiple platforms.
Also VB.NET is considered easy and may be your choice, if you want to do more platform specific programming for Windows and easy graphical user interfaces.
AutoIt is a small and clear language to automate tasks on Windows operating systems.

I want to write specificially for this operating system

Windows: You may have a look at the .NET family. The .NET platform covers several languages that work on Windows operating systems. A powerful language that was specifially designed for .NET is C#.

For little scripts in Windows you can look at Batch or Powershell. Powershell is more modern and is based on .NET 2 while Batch seems to be more popular.

Unix, Linux: For system programming C is the way to go. C is a low-level language that gives you a lot of control, but also responsibility (you can do more, but you also have to do more to achieve your goals).

For little scripts, you can use Bash or Perl.

MacOS: -Mac users, please help me to complete the guide here-

I want to write platform independend programs

Compile once and run everywhere is the premise and strength of Java. It means you write a program and compile it to a runnable entity, which can be executed on every machine that has a JVM installed (most machines have).
Scala runs on the Java Virtual Machine too and interpreted languages like Python are also suitable for all platforms.

If you still want to write platform specific codes, but use one language for all platforms, have a look at cross platform languages like C++, C. These languages have to be compiled for every platform separately.

I want to hack

This is a rather unspecific request as hacking covers a lot of activities.
For writing platform specific hacking-tools, look at the question and answer above.
Other than that:

Reverse Engineering, Cracking programs: Assembly.
Viruses: This is very broad too and depending on the type of virus every language can suitable. Usually you will have to look into platform specific languages if you want to infect the binaries of that platform. For advanced virus writers ASM is the way to go.
There are also macro-viruses, which are much easier to write. Here it depends on the format of the host file which language to take. So your way to go is to get the specification of the file format you want to infect and then you will know which language can be used for this. I don't recommend virus writing for programming beginners, though.
Web hacking: You should definitely get knowledge in JavaScript and PHP. Also SQL, which is not a programming language, but used for database queries.
-help me to complete the guide here-

I would like to do/learn computer graphics

I suggest C or C++ in conjunction with the libraries OpenGL or DirectX.

I want to write applications with a cool GUI

IDEs for languages like VB.NET, C# (Visual Studio) or Java (Netbeans) provide GUI builders and themes to create graphical user interfaces easily.

I don't really want to write big applications, but little scripts that automate some everyday tasks for me.

Have a look at: I want to write specifically for that operating system. There is a section for recommended scripting languages for the specific operating system.
I recommend Python or Scala if you want to write platform independend scripts.

I want to become a web developer

Server side programming languages for web development are i.e. PHP, Java, ASP.NET and Python
Client side programming requires knowledge about JavaScript.

I want the most control possible. I don't care if it is hard or
I need direct access to the hardware. I want to write for robotics, microcontroller, drivers, ...

You can use C or C++. If that is still not enough low-level or if you want to know more about the inner workings, you will have to learn assembly.

I want to create application X

Crypter, Binder: C#, VB.NET are usual languages for the crypter itself. A good stub will need some assembly knowledge.
Java-Drive-By: Java (as the name says)
Hash-Cracker: Can be every language, but if you need access to the graphics card for very fast cracking you should look into C (i.e. to use CUDA, which is a library for NVIDIA graphic cards).
Stealer: Some stealers need access to i.e. the registry of Windows. In that case look into the operating system specific recommendations. Other than that almost every language might suffice.
Virus: Depends on the virus. Have a look at the answer to "I want to hack"
Mobile applications: For Android use Java. Objective-C is your language for iOS.
Desktop games: C++ is often used for games that require lots of resources. But if your requirements are not that high, you can as well use Java or every other language that has some good game engines written for it.
For Flash games like you can play on kongregate.com learn ActionScript.
Keylogger: C++, VB.NET
RAT: C++, VB.NET
Trainers or bots for games: C++, C#
Data mining: R, Python, SQL
Solving mathematical problems: Haskell, Matlab
Artificial Intelligence: Prolog
-help me to complete the guide here, write your suggestions below-


Resource Collection by @Psycho_Coder

Spoiler:
Basics
http://www.learncpp.com/
http://www.cplusplus.com/
http://www.cprogramming.com/tutorial.html
http://www.tutorialspoint.com/cplusplus/index.htm

Win32 GUI & Windows Message Architecture
http://www.winprog.org/tutorial/
http://www.functionx.com/win32/
http://www.stromcode.com/2008/03/01/cwin32-tutorials/
http://www.infernodevelopment.com/c-win32-api-tutorial
http://www.win32developer.com/
http://www.zetcode.com/gui/winapi/
http://www.toymaker.info/Games/html/wndproc.html
http://wiki.winehq.org/List_Of_Windows_Messages

Networking - Winsock
http://beej.us/guide/bgnet/
http://www.madwizard.org/programming/tutorials/netcpp/
http://www.tenouk.com/cnwinsock2tutorials.html

Ring0, Kernels & Assembly
http://www.adp-gmbh.ch/win/misc/writing_...river.html
http://forum.sources.ru/index.php?showforum=24
http://www.wasm.ru/
http://four-f.webs.com/
http://noz3001.wordpress.com/2007/05/16/...ogramming/
http://www.freebsd.org/doc/en/articles/g...lprog.html
http://board.flatassembler.net/
http://wiki.osdev.org/NASM
http://www.nasm.us/docs.php
http://www.nasm.us/xdoc/2.10.06/html/nasmdoc0.html
http://docs.cs.up.ac.za/programming/asm/derick_tut/
http://www.drpaulcarter.com/pcasm/

GDI & GDI+
http://tipsandtricks.runicsoft.com/Cpp/B...orial.html
http://www.mvps.org/user32/gditutorial.html
http://www.functionx.com/win32/Lesson11.htm
http://www.winprog.org/tutorial/bitmaps.html
http://www.tenouk.com/visualcplusmfc/vis...mfc4b.html
http://www.relisoft.com/win32/gdileaks.html
http://code.logos.com/blog/2008/09/displ...art_i.html
http://www.codeproject.com/Articles/1988...-beginners
http://supercomputingblog.com/category/c/

Win32 Hooking, Injecting, Processes, Threading, Volumes, DLL's, Pipes...
http://www.installsetupconfig.com/win32programming/
http://www.tenouk.com/
http://wiki.hackerboard.de/index.php/Windows_API
http://blog.didierstevens.com/2008/03/19...ing-on-ie/
http://www.firststeps.ru/mfc/winapi/winapi1.html
http://www.unknowncheats.me/forum/c-and-...and-c.html
http://wiki.osdev.org/Getting_to_Ring_3
http://www.codeguru.com/cpp/cpp/cpp_mfc/...inners.htm
http://allapi.mentalis.org/apilist/apilist.php
http://msdn.microsoft.com/en-ie/
http://bobmoore.mvps.org/Win32/W32main_ns.htm

Graphics | DirectX, OpenGL & Other Libs
http://www.directxtutorial.com/
http://www.drunkenhyena.com/cgi-bin/directx.pl
http://www.rastertek.com/tutindex.html
http://www.toymaker.info/Games/index.html
http://www.two-kings.de/tutorials/dxgraphics/
http://ogldev.atspace.co.uk/
http://nehe.gamedev.net/
http://lazyfoo.net/SDL_tutorials/index.php
http://www.sfml-dev.org/
http://www.opengl.org/

Operating System Development
http://wiki.osdev.org/Expanded_Main_Page

SQL & Databases
http://www.sqlapi.com/
http://www.sqlite.org/docs.html
http://soci.sourceforge.net/doc/index.html
http://dev.mysql.com/doc/

Game Development & Libraries / Engines
http://irrlicht.sourceforge.net/
http://www.ogre3d.org/
http://www.horde3d.org/
http://www.unrealengine.com/
http://mycryengine.com/
http://unity3d.com/
http://www.sdl.com/
http://alleg.sourceforge.net/
http://www.sfml-dev.org/

Source Code Examples
http://www.planet-source-code.com/
http://trojanforge.com/forum.php
http://www.opensc.ws/
http://www.codeproject.com/
http://www.codeguru.com/
http://www.dreamincode.net/
http://www.daniweb.com/
http://www.rohitab.com/


Good Programming Practices

-in progress-

Acknowledgments

Thanks to @Psycho_Coder , @The Alchemist, @Ex094 and @Solixious for suggestions.
Thanks To @Psycho_Coder for the collection of resources.

Thanks for a great post, it helped me very much.

Reply

RE: Programming language FAQ and choosing guide #39
Just saw this post come up. Thought I'd help with filling out the OS X specific section: OS X uses C and most apps written for OS X are using Objective C. Great language if you'd like to develop for the closed source, dying mobile phone OS, iOS Tongue
xevenofhearts

Reply

RE: Programming language FAQ and choosing guide #40
(07-31-2013, 04:10 PM)Akkomodate Wrote: Just saw this post come up. Thought I'd help with filling out the OS X specific section: OS X uses C and most apps written for OS X are using Objective C. Great language if you'd like to develop for the closed source, dying mobile phone OS, iOS Tongue

I would develop open-source programs even if I was programming in Obj-C.

And with "OS X uses C", what do you mean? If you could be a bit more specific and detailed, your comment might be of some help to Deque. I don't know OS X, but it supports tons of different languages, what you're saying as it is does not make much sense.
My Bitcoin address: 1AtxVsSSG2Z8JfjNy9KNFDUN6haeKr7LiP
Give me money by visiting www.google.com here: http://coin-ads.com/6Ol83U

If you want a Bitcoin URL shortener/advertiser, please, use this referral: http://coin-ads.com/register.php?refid=noize

Reply