[Civil Discussion] Which Language Is Better menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 25
  1. #1
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [Civil Discussion] Which Language Is Better

    As the title says, which language do you think is best for what we do here in this section?

    Please keep the thread civil.

    Do not post stuff like "C# is better just because". Give good reasons as to why!


    Keep in mind, this thread isn't meant to be a giant debate on who's e-peen is bigger. In the long run, the language choice is nothing but preference (as has been proven so many times).

    This thread is just to give up some discussion on why certain languages are better than others, and in what contexts those are true.

    [Civil Discussion] Which Language Is Better
  2. #2
    BoogieManTM's Avatar Active Member
    Reputation
    52
    Join Date
    May 2008
    Posts
    193
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    While I think C++ is much easier [less hackish] to interface with other native applications.. I still find C# to be a better platform for a solo (or small team) project. Debugging is easier, the standard libraries are far more comprehensive, and it's still pretty much as capable as an unmanaged application/library.

    Though I have not touched C++ in quite a few years (2005-ish), I know 0x has changed/fixed a lot of problems I had with C++, on paper at least. I don't really see myself going back to it. I don't really care too much for platform independence for the vast majority of my projects, even though I spend 90% of my time behind a POSIX system. Perl satisfies my administration duties better than any other language I've ever used on any regular basis.

    But yea.. 'better' is all a matter of preference beyond measurable capabilities and efficiencies. Use whatever works, works well and you're comfortable with... in reverse order!
    Last edited by BoogieManTM; 09-27-2011 at 08:51 AM.

  3. #3
    adaephon's Avatar Active Member
    Reputation
    76
    Join Date
    May 2009
    Posts
    167
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I think 'best' or 'better' are always going to be subjective no matter how much you ask for civility, and obviously it comes down to the individual. It also depends on how you define 'best'. I think C++ is best for writing game hacks for a lot of definitions of 'best'. For instance, as most games are written in C++ it is often easier to interact in a 'native' manner from C++. Compilation to native code means no extra hoops have to be jumped through to inject your code (no loading a CLR etc). Raw pointer manipulation means editing and manipulating the game's memory from an injected point of view is very simple. The majority of 'hack' or security related libraries and tools are generally written in C/C++, so they are all available to use without extra effort or wrappers (Detours, BeaEngine, AsmJit). In-game rendering is potentially easier due to natively being able to link to DirectX without relying on wrappers. C++ also assumes less about how it will be used (i.e. no assumptions) - I've occasionally found myself dodging such assumptions when using C#.

    Having said all that, I've never used C++ for writing game hacks (admittedly I haven't really written many game hacks at all, I always end up researching tangents). Instead, I primarily use C# (as a lot of other people on this site do). Initially, my reasons were primarily due to familiarity and the availability of information/libraries here (and potentially Glider's API). However, I was never satisfied using someone else's library without understanding how it worked, so I'd learn and understand and write my own. The more I do in C#, the more I find I enjoy not because it's the best for the task, but because it isn't. Even though I want to write more in C++ to re-familiarise myself with it, I enjoy the challenge of using C# in the more edge-case scenarios.

    I think C# has some pretty interesting capabilities that aren't as available in C++. LINQ, IEnumerable<T> and yield, dynamic, and extension methods are all features that allow you to hide the relatively 'dirty' details of working with a native process' memory in an interface that feels pretty elegant to use. I think there's some pretty cool potential for 'scriptable' hacks/bots by using IronRuby/IronPython on top of an injected DLR. Mono and a few native helper libraries have potential to make cross-platform somewhat possible, even for areas so reliant on OS details. Of course, most of these areas aren't really common in the code releases here, but they're areas that I definitely think make C# a pretty interesting language to explore for writing game hacks.

  4. #4
    gononono64's Avatar Contributor
    Reputation
    100
    Join Date
    Jul 2009
    Posts
    85
    Thanks G/R
    1/5
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    As stated above, "best" and "better" are subjective. In terms of actually making a bot, I prefer the use of Autoit, even though it is completely hated by this community. Autoit is great for the manipulation of a game character. Instead of writing to memory for say, your character moving forward, backwards, etc. you can use one simple command to do this for you (the controlsend()).

    The only problem that i have, right now, is that it is not object oriented. When writing large programs I can some times have a tough time to keep it in order and when working with hundreds of variables, it can get a little difficult to keep track of. HOWEVER, It is still possible to write in an OO fashion, even though it does not have a lot of the same capabilities as other languages.

    My second favorite for dealing with any kind of program would be c++. This is mostly because i have never really touched on any other languages (except java). I never really got to advanced with c++ so i couldn't give any pros other than its style (which i like)
    Hi! My name is Devon and I’m an alcoholic. Moving on…
    https://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/319172-guide-how-make-wow-bot-complete-newbs.html

  5. #5
    sitnspinlock's Avatar Elite User CoreCoins Purchaser
    Reputation
    398
    Join Date
    Sep 2010
    Posts
    439
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    i could talk for hours on this but I just woke up.

    c/c++

    because I spend most of my time working on drivers/kernel mode
    Last edited by sitnspinlock; 09-27-2011 at 11:52 AM.

  6. #6
    streppel's Avatar Active Member
    Reputation
    78
    Join Date
    Mar 2007
    Posts
    196
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    For me, in the context of Memory Editing, C# is the way to go. It's easy to understand, the learning curve isn't as steep as in other languages, it's typesafe, it offers interaction with native code. That's about everything i need.
    When thinking about platform independance i'd say c# isn't as good as java(what i'm currently learning @ work/studies), and as the syntax is kinda similar, it's no big deal to switch from c# to java.
    Of course those languages are not as fast as native asm code or at least c++, but i had to decide wether to lear something that's not as fast but user/coderfriendly of make it a little faster but harder to learn...and then i chose c#.

    Nowadays that i'm more used to reverse engineering and the stuff that happens behind the scene, learning another language isn't a problem anymore, but still i stick to c#.
    As Apoc said, it's all about what you'd want to do with the language

  7. #7
    PyGuy's Avatar Corporal
    Reputation
    14
    Join Date
    Jan 2011
    Posts
    20
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I prefer C# for most tasks because I can write quickly without scratching my head over syntax (I have terrible trouble reading go, erlang, Lisp, F#, etc). It also has a large user-base and the corresponding library breadth and help sites (thank God for stackoverflow!) that comes with many users. The addition of Linq and lambda expressions make it a very powerful language.

    However, for raw speed or arbitrary memory operations, nothing beats C/C++ and I still use that too. I just throw up a little in my mouth every time I make a memory-management error.

  8. #8
    schlumpf's Avatar Retired Noggit Developer

    Reputation
    755
    Join Date
    Nov 2006
    Posts
    2,759
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    When writing a hack for a game written in C++: C++, obviously. Being able to just reverse engineer the classes and then use the data in memory as if it were your own stuff beats everything in my opinion. Reading some memory into some buffers, having getters casting stuff into specific types etc is just pain compared to defining a struct with the actual structure and casting it on top of a raw pointer, then using it, as well as the actual methods the game provides, without having to do some magic. I always am near crying when seeing people having offsets defined as constants, then doing some manual pointer arithmetic and calling some reading function returning the value found at that location.

    Else: C++11. + boost (and + Qt when going GUI) is pretty much everything I can think of being needed. Also: Performance. (I work in high performance computing.)
    Managed languages: Bah. Not having garbage collection is not an issue with unmanaged languages, as they tend to produce less garbage. The only advantage would be large amount of code or good APIs.
    Going the way of objective-c(++) is a good idea for people wanting runtime information en masse and runtime binding. Also, Apple did a great job with the APIs available for OSX and iOS.

  9. #9
    streppel's Avatar Active Member
    Reputation
    78
    Join Date
    Mar 2007
    Posts
    196
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by schlumpf View Post
    When writing a hack for a game written in C++: C++, obviously. Being able to just reverse engineer the classes and then use the data in memory as if it were your own stuff beats everything in my opinion. Reading some memory into some buffers, having getters casting stuff into specific types etc is just pain compared to defining a struct with the actual structure and casting it on top of a raw pointer, then using it, as well as the actual methods the game provides, without having to do some magic. I always am near crying when seeing people having offsets defined as constants, then doing some manual pointer arithmetic and calling some reading function returning the value found at that location.

    Else: C++11. + boost (and + Qt when going GUI) is pretty much everything I can think of being needed. Also: Performance. (I work in high performance computing.)
    Managed languages: Bah. Not having garbage collection is not an issue with unmanaged languages, as they tend to produce less garbage. The only advantage would be large amount of code or good APIs.
    Going the way of objective-c(++) is a good idea for people wanting runtime information en masse and runtime binding. Also, Apple did a great job with the APIs available for OSX and iOS.
    well,it's not too much of type casting if your are using c# either,define the structs,and if you are inprocess, give a pointer(by reference) to the method.
    and calling methods of the game is not a problem either. (at least for me)
    Last edited by streppel; 09-27-2011 at 01:30 PM.

  10. #10
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Altough I'm mainly developing in C# at the moment, I stumbled upon this presentation of Herb Sutter at C++ and Beyond 2011:
    C++ and Beyond 2011: Herb Sutter - Why C++? | Channel 9

    For performance independant single-man-projects like the bots most people maintain in this forum, I would choose C# as the preferred language.
    Some reasons I prefer it over C++ (which would be the single alternative for me):
    • Rich standard library (Sutter forecasts change in that area)
    • Optional unsafe code for performance tweaks and ease of use
    • Dependancy/project management (put a simple reference instead of messing with .lib in debug/release/* versions)
    • Productivity language features such as LINQ, DLR and IronPython embedding
    • Syntax (can be ugly in C++)
    • Leading to the previous point: Language is much more complex (but actually bears more potential)
    • Mostly regarding T(/B)DD: Compile times are just annoying for larger C++ projects
    • Not easily extensibilty, most due to missing reflection or other introspection features
    • Debugging experience (yes, I'm producing bugs from time to time ...)


    Note that I'm still practicing my programming skills (especially I should in C++), therefore most points might be subjective. From my limited noob experiences the point of bringing libraries to work together weighs the most. I hate to download some .cpp files and work 3 hours in the solution explorer only to make it compile the first time.

    I recently introduced myself to python and I can clearly see potential in using it as scripting language embedded in a bot. But I don't consider it a useful language for an actual (bigger) bot project. Again note, this is very subjective, mostly because my python skills are very limited.

  11. #11
    jjaa's Avatar Contributor
    Reputation
    245
    Join Date
    Dec 2006
    Posts
    562
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    For me, python without a doubt. I say that having spent a lot of time using C++ and C#.


    You do however still need to make a loader in C++ to initialize the python interpreter. In the end, python is a beautifully designed language, and lacks a lot of the ugliness that comes from being C based. Speed is not really an issue cause if you need the speed you can just make something in Cython(Cython: C-Extensions for Python) ,RPython(http://codespeak.net/pypy/dist/pypy/doc/translation.html) or drop down into C/++. I have no experience in RPython, but i have used cython in my wowapi. However, i stopped using it as it just wasn’t required. Easier to call native functions with the ctypes module.
    Python is the one language that caused me to drop my other languages and become a fanboy . I say that having spent a lot of time learning quite a few languages.

    Last edited by jjaa; 09-29-2011 at 04:52 AM.

  12. #12
    SKU's Avatar Contributor
    Reputation
    306
    Join Date
    May 2007
    Posts
    565
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by jjaa View Post
    For me, python without a doubt. I say that having spent a lot of time using C++ and C#.


    You do however still need to make a loader in C++ to initialize the python interpreter. In the end, python is a beautifully designed language, and lacks a lot of the ugliness that comes from being C based. Speed is not really an issue cause if you need the seed you can just make something in Cython(Cython: C-Extensions for Python) ,RPython(http://codespeak.net/pypy/dist/pypy/doc/translation.html) or drop down into C/++. I have no experience in RPython, but i have used cython in my wowapi. However, i stopped using it as it just wasn’t required. Easier to call native functions with the ctypes module.
    Python is the one language that caused me to drop my other languages and become a fanboy . I say that having spent a lot of time learning quite a few languages.

    Can't agree more. I too have grown very fond of the language. C++ & HadesMem for the host dll & some generic hooks (WndProc, all the DirectX9 functions necessary for drawing, pulsing and proper reset/release handling), and then I just host a Python interpreter. ( Don't forget PyPy :: PyPy )
    While I could perform all the hooks in Python and make my host dll even smaller, I want to be able to reset the Python interpreter at any time without having to unload/reload my host dll, so the host provides a minimal DirectX9 console and a few console commands (execute Python command, restart Python interpreter, ..), the rest is Python. I have yet to see a huge performance impact, and I'm still using the standard Python implementation.

    I'm a Python fanboy.

  13. #13
    jjaa's Avatar Contributor
    Reputation
    245
    Join Date
    Dec 2006
    Posts
    562
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by SKU View Post
    Can't agree more. I too have grown very fond of the language. C++ & HadesMem for the host dll & some generic hooks (WndProc, all the DirectX9 functions necessary for drawing, pulsing and proper reset/release handling), and then I just host a Python interpreter. ( Don't forget PyPy :: PyPy )
    While I could perform all the hooks in Python and make my host dll even smaller, I want to be able to reset the Python interpreter at any time without having to unload/reload my host dll, so the host provides a minimal DirectX9 console and a few console commands (execute Python command, restart Python interpreter, ..), the rest is Python. I have yet to see a huge performance impact, and I'm still using the standard Python implementation.

    I'm a Python fanboy.
    Cool, do you run it in the main thread? Just recently i manged to setup an IPython interpreter with input/Tab completion in one thread and code execution in the main thread. Development with an interactive interpreter is ****ing awesome

  14. #14
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Definitely Brainf*ck (url masked because of profanity filter). Either that or LOLCODE.

  15. #15
    trinity04's Avatar Active Member
    Reputation
    16
    Join Date
    May 2009
    Posts
    69
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    Definitely Brainf*ck (url masked because of profanity filter). Either that or LOLCODE.
    I love it!

    I first learned some basic Pythin when I got into programming. I was young and got bored real easily. After a few years I learned java and got pretty far into it, made some basic apps that really had no purpose except to amuse myself.

    Later, I learned C# and have really gotten into it. I have actually written quite a few practical applications with it. Mainly Proprietary apps for My family's business and have made some basic wow bots with help from this forum.

    C# has been easy to use and learn. It seems to have everything I need and more. I have looked at the syntax of other languages, and become overwhelmed very easily. but C# just seems so organized to me. C# also has a large following and the msdn forums are a great place to get help when needed.

    my 2 cents

Page 1 of 2 12 LastLast

Similar Threads

  1. which guide is better?
    By omg123 in forum World of Warcraft General
    Replies: 1
    Last Post: 11-22-2008, 03:32 PM
  2. which is the better one to use?
    By jedite1000 in forum WoW EMU Questions & Requests
    Replies: 6
    Last Post: 09-12-2008, 09:30 PM
  3. Which 1 is better?
    By Robob in forum WoW PvP & Battlegrounds
    Replies: 31
    Last Post: 08-08-2007, 11:41 PM
  4. Which song is Better? Your thoughts :D
    By Gelormino in forum Community Chat
    Replies: 6
    Last Post: 08-01-2007, 08:52 PM
All times are GMT -5. The time now is 04:20 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search