Jump to content

C++ or C or C# or Object-C or Assembly C

TiresomeToe933
12 minutes ago, TiresomeToe933 said:

Thanks In Advance!

I'm guessing your asking what language should you choose, but that depends on what you'll be using the language for 

Link to comment
Share on other sites

Link to post
Share on other sites

These are completely different languages for completely different applications. What are you trying to do?

If you want to reply back to me or someone else USE THE QUOTE BUTTON!                                                      
Pascal laptops guide

Link to comment
Share on other sites

Link to post
Share on other sites

C/C++ has its perks of being widely used and at least for C, there's a compiler for almost anything still on the market. I find C more useful as a systems software language, or writing "close to metal", but you can use it in application software development. And I feel C++ better suited for application software development than C

 

C# is only for application software development and largely supported on Microsoft ecosystems through the .NET Framework, though you can find frameworks that support it on Linux or macOS through Mono.

 

Objective-C should be avoided. Apple pretty much abandoned it immediately after they released Swift and the only use you can get out of these days is for maintaining "legacy" iOS apps. If you wanted to learn Objective-C because you want to work in the iOS ecosystem, learn Swift instead.

 

There's also no "Assembly C", it's just assembly language. It's useful if you want to learn about the nitty and gritty details of how a CPU runs a program, but outside of  embedded systems or extremely fine-tuned system software programming (like for OS kernels or drivers), you're not going to use it.

 

If you're looking for something to just learn on and you have no experience with programming whatsoever, I'd recommend C# (or we could just pitch in our preferred language of choice here). If you're looking for something to learn to use in a career, C/C++ is the better option.

Link to comment
Share on other sites

Link to post
Share on other sites

42 minutes ago, M.Yurizaki said:

If you're looking for something to learn to use in a career, C/C++ is the better option.

 

Actually might wanna look into C# as well for careers. It's starting to become more popular with some companies in many listings and I have even used it in my internship. Also, Swift and Kotlin are gaining traction in the mobile market so it might be a good idea to keep an eye on those.

If you want to reply back to me or someone else USE THE QUOTE BUTTON!                                                      
Pascal laptops guide

Link to comment
Share on other sites

Link to post
Share on other sites

Assembly: good for writing drivers and embedded devices because they directly control the hardwares. You won’t want to code anything complex with it tho.

 

C: same thing as assembly but higher level. It is low enough that it is still good for writing low level stuff like kernel drivers but higher enough you can write complex apps with it without pulling your hairs out.

 

C++: it is C but with added features like class support. It is quite more modern compared to C in my opinion because it is object oriented. Performance is still quite good so it is use in many performance critical applications like games, as long as you take time to opitmise code that is. No memory management compare to higher level languages.

 

C#: develop by Microsoft. I never use it before. I am planning on learning it in case I ever need to create some windows apps for some reason but I think C++ can handle that just fine.

 

Objective-C: sounds like Microsoft C# but made by Apple instead. Idk what it does.

 

 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

8 minutes ago, wasab said:

Objective-C: sounds like Microsoft C# but made by Apple instead. Idk what it does.

Objective C is much older and less featured than C#. It was part of the original Mac toolbox around the time of the Lisa/Macintosh (it was invented internally to help with the GUI on Lisa, but only publicly released to application developers when the Macintosh came out.) There are no similarities between objective C and C# other than that they fall into the "C like" language family. Just a disclaimer, the history is a little more complicated than that because I've left out NeXTs involvement in the matter.

 

 

14 minutes ago, wasab said:

Assembly: good for writing drivers and embedded devices because they directly control the hardwares. You won’t want to code anything complex with it tho.

Sure you do. Assembly is fun. You don't want to code anything GUI with it though, that's just tedious and repetitive.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

C#

 

Flexibility to do Windows applications, web apps, mobile apps via Xamarin. And .net is seeing greater support on other platforms now as well.

 

Assuming you're just picking a language to learn without any specific goal in mind I would totally go for C#. I'm pretty biased though.

 

In case it's not C# I'd sign on to staying away from Objective-C. Swift is what you'd want if you're doing Apple specific development, but honestly I'd personally stick to a cross platform option like Xamarin, or PhoneGap/Cordova. I really liked Swift, but if you start doing app development and want to add an Android application suddenly you're writing Java now too (nothing against Java, I'm just lazy).

 

The others I've never used in daily life, so I won't ruin the thread with uninformed opinions.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, jslowik said:

I really liked Swift, but if you start doing app development and want to add an Android application suddenly you're writing Java now too (nothing against Java, I'm just lazy).

 

Android development is slowly moving to kotlin, which is surprisingly similar to Swift. I would recommend giving them a go always.  

If you want to reply back to me or someone else USE THE QUOTE BUTTON!                                                      
Pascal laptops guide

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, Castdeath97 said:

Android development is slowly moving to kotlin, which is surprisingly similar to Swift. I would recommend giving them a go always.  

 

You're right, I had completely forgotten about Kotlin. I'm going to claim I'm only half a liar since it's still on the JVM xD.

 

That being said, I still believe there are still some advantages to using a cross-platform solution. Especially if it's not for any specific use currently. And my vote is still C# :D

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, jslowik said:

 

You're right, I had completely forgotten about Kotlin. I'm going to claim I'm only half a liar since it's still on the JVM xD.

 

That being said, I still believe there are still some advantages to using a cross-platform solution. Especially if it's not for any specific use currently. And my vote is still C# :D

Me too, getting too popular in the industry and some applications like Unity.

If you want to reply back to me or someone else USE THE QUOTE BUTTON!                                                      
Pascal laptops guide

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, Castdeath97 said:

Android development is slowly moving to kotlin, which is surprisingly similar to Swift. I would recommend giving them a go always.  

kolin won’t  replace java. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

Wow, thanks guys. I am planning to use a high-level coding language that I can use to code for any platform. Also, if possible I would be happier if that language could be used for bios writing, kernel updates, writing os etc. I currently use Java. I want to work on hardware and software when I'm older so I am fine with learning 1 or 2 languages, Assembly and what you guys think.....

Link to comment
Share on other sites

Link to post
Share on other sites

45 minutes ago, TiresomeToe933 said:

Also, is learning multiple languages important?

depends. If you already have a job in an industry you love working with tech that makes you happy, you really only need to worry about your immediate tech stack and then you can dabble in the bleeding edge stuff to stay current. 

 

If you are just learning programming (and it sounds like you are) then you should try to get familiar with a decent range. You don't need to be a language expert in any languages, just try a few out and get the basics down on some different ones so that as you grow as a developer, you can better identify what languages/tech stacks/development types appeal to you. Then once you know what you like, you can invest more time in those technologies and start working towards expert level knowledge in those.

 

For example, if you are just starting out you might want to learn VERY basic webdev (javascript, html, css) so you can build some basic websites and see if you like that or not. Since you mentioned hardware, I would recommend C++ as a next step as it's syntactically similar to java, but gets you closer to the metal. Try to focus on the stuff that java doesn't have: RAII, more direct control of memory, thinking about things in terms of pointers and references, stack vs heap, etc. It will help you get a feel for whether you like less abstraction for system resources.

 

If you feel really adventurous you can try learning assembly. I'd recommend something like ARM instead of x86, as x86 is pretty bloated and hard to grasp if it's your first foray into assembly languages. 

 

I'd also throw python in the ring as a good thing to learn, as I and many other engineers I work with have found it really useful for a quick automation tool, and i've written many python scripts that I use frequently to save myself time or effort while working on other types of development. 

 

tl;dr: Don't focus on getting really knowledgeable on just a few languages right away. Try your hand at a few different ones to give yourself some breadth, so that you can more confidently pick a "favorite tech" and devote more learning resources to that side of the tech stack. The ones I gave are just suggestions, you can go a lot of different places with languages, and without more information on what you want to make it's kind of hard to give specific suggestions. Other than that, C, C++, Java, python, javascript, Ruby, Assembly, Rust, C#, all have their time and place and you can't really go "wrong" with learning them since most of the important bits are language agnostic and learning any language well will teach you plenty of universally good things (trying to reduce complexity, proper variable names, modularity, single responsibility, etc.)

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, TiresomeToe933 said:

Also, is learning multiple languages important?

i prefer jack of all trades but masters in one. in other words, be competent enough in some languages but really focus on one language you like which is useful. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

12 hours ago, wasab said:

kolin won’t  replace java. 

Yeah probably won't replace it completely, but kotlin is becoming more relevant in the mobile space. Worth giving it a look.

If you want to reply back to me or someone else USE THE QUOTE BUTTON!                                                      
Pascal laptops guide

Link to comment
Share on other sites

Link to post
Share on other sites

C# if this is your first language or you just want to learn something nice and easy. Otherwise learn C++.

On 3/27/2018 at 7:09 PM, TiresomeToe933 said:

Also, is learning multiple languages important?

Yes, you'll probably be expected to learn a new language within a week or so at some point in your life if you're intending on doing software engineering. The more languages you know the faster learning a new language gets and at minimum I think you should know at least one low level language like C++, some mid to high level scripting language like C#/Python and some understanding of different programming paradigms. Functional programming offers a lot of neat features and is certainly worth learning it.

Link to comment
Share on other sites

Link to post
Share on other sites

On 3/27/2018 at 6:08 PM, TiresomeToe933 said:

Wow, thanks guys. I am planning to use a high-level coding language that I can use to code for any platform. Also, if possible I would be happier if that language could be used for bios writing, kernel updates, writing os etc. I currently use Java. I want to work on hardware and software when I'm older so I am fine with learning 1 or 2 languages, Assembly and what you guys think.....

Keep in mind that assembly language is specific to the hardware in question. For example, if you want to do a branch if not equals instruction, ARM's mnemonic is BNE while x86's is JNE. And again, you rarely, if ever, work in assembly. You only need to do it if you need to extremely fine tune the code (but modern C compilers are very good at that anyway) or if you need to do something before the processor is ready to run a higher level application.

 

It's good for educational purposes though, but for anything serious outside of that, I haven't seen it used.

On 3/27/2018 at 6:09 PM, TiresomeToe933 said:

Also, is learning multiple languages important?

Most software development jobs these days require that you have some experience in multiple languages. But in practice, they probably don't really care as long as you can learn a new one quickly. However, you should be familiar with the languages that they actually require.

 

In my experience, learning multiple languages isn't really that useful. Most languages are similar enough that if you know one, the others are easier to pick up. Like if you know C, a lot of other languages are fairly easy to learn because the syntax is similar. But even if you go to a language where it's not, like Python, those tend to follow similar concepts of syntax. So what you're really learning are the nuances of that language. It's like supposedly if you know Latin, you can easily pick up Spanish, Portuguese, and Italian. But otherwise, I don't really go out of my way to learn another language just because. The language is an implementation detail.

 

What's really important with software development is knowing how to design something well. That is independent of any language. It doesn't matter if you know a dozen languages if all you can write is spaghetti code.

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, M.Yurizaki said:

It's good for educational purposes though, but for anything serious outside of that, I haven't seen it used.

It may be a rarity in application development, but it's definitely still used by sub-industries. For starters, think about compiler developers. They may not write most of their code in assembly, but they definitely need to know the architecture and instruction set pretty well. To them, C source code is "front end".

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

On 3/29/2018 at 4:53 PM, reniat said:

It may be a rarity in application development, but it's definitely still used by sub-industries. For starters, think about compiler developers. They may not write most of their code in assembly, but they definitely need to know the architecture and instruction set pretty well. To them, C source code is "front end".

Assembly is the favorite of malware writers. If you want to write something complex, like a rootkit or virus that embed itself in bios or kernel, assembly is usually required.

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

I don't think you really understand that it really depends on what you're trying to do. When you get a job it is very possible you'll start with the language you've chosen but you might get switched over to a different framework that uses a different language and you need to be able to evolve with the technologies you support/develop. You program to develop products that meet business requirements & C# won't always meet those needs so you're shooting yourself in the foot if get hung up on a language itself.

 

My spin on answering your question is become a web application developer. It's good money, enjoyable, good experience, good variety of things to do, lots of jobs & will generally expose you to a lot of different languages and frameworks. There's lot of great frameworks out there for web app devs to list a few.. React.js, Angular, ASP.NET MVC/ASP.NET MVC Core, SharePoint Framework & much more.

 

Side note: C# is amazing, the Microsoft suite is pretty sweet.

Link to comment
Share on other sites

Link to post
Share on other sites

Don't waste time on frameworks unless you absolutely know which part of your work can be made easier with them. That means that you'll need a deep understanding of the language itself. 

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×