Jump to content

programming languages ?

28 minutes ago, RorzNZ said:

I am a scientist and I would much prefer to use Java. Java is the future. 

Wow really? So you think java is the best? 

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, OCD-FREAK said:

I really appreciate answers like yours, very motivational. More please, Many thanks :)

Np. It doesn’t really matter what language you use. For instance you could control an arduino with C to control a device. Several hobby car kits come with an arduino as the micro controller. 

Link to comment
Share on other sites

Link to post
Share on other sites

12 minutes ago, OCD-FREAK said:

Wow really? So you think java is the best? 

There isn't a "best". You wouldn't write a webpage with x86 assembly, and you wouldn't create a high frequency trading system with python. 

 

Java is a staple in the object oriented application development world, and is used as a backend frequently in webdev as well (through thinks like spring MVC), and is also heavily used for android app development. I think java is a fine language (it's the one I use most for work, but it's definitely not my favorite), but it's not "THE FUTURE!" because no language is "THE FUTURE!". 

 

This field is constantly in flux, and the language that shines the most right now will seem dull and faded in time. I would say if anything, Java is starting to fade simply because many desktop applications (java's bread and butter space) are moving to more of a webdev tech stack. Will all of development be webdev in the future? Will java go away ? not at all, and that's my point: everything changes.

 

Instead of being hyper-focused on a single language, learn a language and focus on the agnostic parts of "good" development. things like:

  1. Writing things in a modular way
  2. Making things secure
  3. Making the code clear and maintainable
  4. Writing performance oriented when needed 
  5. Not prematurely optimizing
  6. Making good APIs
  7. Creating solid documentation
  8. Writing testable code
  9. Writing good tests with good coverage

There are PLENTY more, but those are some bigger points that I see most good engineers know that new engineers typically don't. Notice how all of those points are language agnostic, and learning those once will let you carry them across all your tech stacks now and in the future. A solid java developer now will still be a solid developer if java goes away, because he/she will know the core concepts of good development.

 

TL;DR there are SO many languages that will work for a first language if you don't have something very specific in mind. Just pick one and go. My first language was python, I know many people's first language is Java or C#, and plenty more started out with C++ or C, or hell even Visual Basic. It really doesn't matter as long as you stick with learning good development habits.

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

7 hours ago, OCD-FREAK said:

Wow really? So you think java is the best? 

Most versatile

Link to comment
Share on other sites

Link to post
Share on other sites

13 hours ago, RorzNZ said:

Most versatile

It's not any more versatile than any other high level language.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

On 2.7.2018 at 1:36 PM, OCD-FREAK said:

which programming language do you think is the best and will always be in demand ?

 

C.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Dat Guy said:

 

C.

depends on the use case, C is not suitable for every problem.

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, Dat Guy said:

Which problem is not covered by C?

I haven't said that certain problems can't be done in C, just that it's more efficient to use languages build for specific problems.

-
Why should I climb a steep, rocky street uphill with a roadbike when it's more efficient and easier to use a mountainbike which is build for this.

Link to comment
Share on other sites

Link to post
Share on other sites

The easiest solution is usually the worst solution when it comes to software. It wastes precious resources.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

56 minutes ago, Dat Guy said:

The easiest solution is usually the worst solution when it comes to software. It wastes precious resources.

It can be, if you are in a domain where resource efficiency is #1. If you're talking anything webapp or desktop application (or pretty much anything that is about user interaction), then how efficient your code oftentimes makes negligible difference (assuming you're not doing something really stupid like network calls from the ui thread in a tiny for loop). A user is not going to notice if their dialog opens a few milliseconds slower because the UI code was written in Java instead of C. Add to this that cleaner more maintainable code will tend to have less defects, AND make future enhancements easier and faster, and it's very easy to see how less efficient but highly maintainable code can be superior to code that uses a bit less memory and executes in fewer CPU cycles.

 

There are DEFINITELY places where optimization is important though, and this is why optimization strategy is so important. It basically operates like this:

1) Develop the software by using well-designed code that’s easy to understand and modify

     2) If performance is poor,

          a) Save a working version of the code so that you can get back to he last known "good state".

          b) Measure the system to find hot spots.

          c) Determine whether the weak performance comes from inadequate design, data types, or algorithms and whether code tuning is appropriate. If code tuning isn’t appropriate, go back to step 1.

          d) Tune the bottleneck identified in step (c).

          e) Measure each improvement one at a time.

          f) If an improvement doesn’t improve the code, revert to the code saved in step (a).

     3) repeat from step 2.

 

(this is shamelessly stolen from chapter 25 of Code Complete. I highly recommend it.)

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 minute ago, reniat said:

If you're talking anything webapp or desktop application (...), then how efficient your code oftentimes makes negligible difference

And this is why text editors (!) hog 1/2 GiB of RAM when idle.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Dat Guy said:

And this is why text editors (!) hog 1/2 GiB of RAM when idle.

that's a bit embellished don't you think? Sure, crappy software is crappy software, but that doesn't equate to "ALWAYS WRITE IT FULLY OPTIMIZED FROM THE START!!!!!!"

 

 

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

Crappy software which is crappy because people said resource usage was "negligible" on a desktop would be not crappy if it was written FULLY OPTIMIZED FROM THE START!!!1!!11!

 

There is no valid excuse to waste system resources.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

48 minutes ago, Dat Guy said:

Crappy software which is crappy because people said resource usage was "negligible" on a desktop would be not crappy if it was written FULLY OPTIMIZED FROM THE START!!!1!!11!

Like I said, maintainability, scalability, and enhanceability often have far more of an impact on end users than shaving microseconds off of an operation (depending on the context of the application). It is also very possible to take good code and make it crappy through optimization, even if that optimization results in less resources used.

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

3 hours ago, Dat Guy said:

 

C.

i thought so, it's really a very powerful language it's used in embedded systems, and to my surprise NASA uses it as their main language to program their satellites and rockets :) 

Link to comment
Share on other sites

Link to post
Share on other sites

I skimmed through these responses and didn't see anyone mention the actual goal.

@OCD-FREAK , what is it that you wish to build? Do you have a project idea? If you don't have a project idea, then what most interests you?

 

For 2018 and 2019:

- Applications Development on Windows: Google "Visual Studio". It is by far the most advanced applications development tool, and it's free. However, you will be bound to Windows development.

- Cross Platform Applications Development: Java with Eclipse (or Intellij if you have the money) OR if you have a web background, then I highly recommend looking into https://electronjs.org/

- Web Development: HTML, CSS, JavaScript for a few months. Then find a way to get involved in the Angular project from Google.

- Cross Platform Game Development: Unreal Engine 4. No one is saying it, but Unreal Engine 4 is taking over the market, and it has visual scripting. Getting experience in visual scripting could be very valuable in the future, but never be scared of coding.

- Cross Platform Mobile Development: Flutter. Flutter is new, however, it is backed by Google is makes getting mobile apps up quickly.

- Analytics, System Scripting, Data Modeling: Python. Python is growing quickly and is a great starting point.

 

Depending on your goal your environment will change. Find a project and make it happen. No matter what, there is plenty of opportunity.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Ty_Cox said:

I skimmed through these responses and didn't see anyone mention the actual goal.

@OCD-FREAK , what is it that you wish to build? Do you have a project idea? If you don't have a project idea, then what most interests you?

 

For 2018 and 2019:

- Applications Development on Windows: Google "Visual Studio". It is by far the most advanced applications development tool, and it's free. However, you will be bound to Windows development.

- Cross Platform Applications Development: Java with Eclipse (or Intellij if you have the money) OR if you have a web background, then I highly recommend looking into https://electronjs.org/

- Web Development: HTML, CSS, JavaScript for a few months. Then find a way to get involved in the Angular project from Google.

- Cross Platform Game Development: Unreal Engine 4. No one is saying it, but Unreal Engine 4 is taking over the market, and it has visual scripting. Getting experience in visual scripting could be very valuable in the future, but never be scared of coding.

- Cross Platform Mobile Development: Flutter. Flutter is new, however, it is backed by Google is makes getting mobile apps up quickly.

- Analytics, System Scripting, Data Modeling: Python. Python is growing quickly and is a great starting point.

 

Depending on your goal your environment will change. Find a project and make it happen. No matter what, there is plenty of opportunity.

my main goals is to end up programming for the military especially the Air Force, and i also LOVE android app and Robotics , i've heard that C language is the best language one can learn due to its power, because if you compare a C language to a tool it would be a Swiss Knife :). i would like to hear more from your professional advice :) many thanks

Link to comment
Share on other sites

Link to post
Share on other sites

17 minutes ago, OCD-FREAK said:

my main goals is to end up programming for the military especially the Air Force, and i also LOVE android app and Robotics , i've heard that C language is the best language one can learn due to its power, because if you compare a C language to a tool it would be a Swiss Knife :). i would like to hear more from your professional advice :) many thanks

Hey @OCD-FREAK,

I see that others before this were recommending C. *sigh*... You did mention that you wanted to work for the US military, and the US military will likely want to be programming as close to the hardware as possible to prevent attacks. However, C is going to be very difficult to learn. I would never pretend to understand your capability to learn the language, however, I believe it will make it more difficult on you if you start with C.

 

Do me a favor and read over this StackOverflow QA: https://stackoverflow.com/questions/3468068/low-mid-high-level-language-whats-the-difference

This QA discusses the difference between high-level and low-level programming languages. The higher up the language is, the more easily it is to interpret in your native language.

 

First, SQL. Ignore this for now.

 

Next up, Python. Many schools have started to teach python to teenagers. Python is very easy to understand and can be very powerful in a creative person's hands. You mentioned robotics. Python guys & gals are crazy with robotics stuff.

 

After that, C# and Java. If you have large aspirations and you want to truly challenge yourself, I would start with either C# or Java.

Both of these languages are very similar in syntax, and if you learn one then you'll be able to interpret the other.

 

Which to start with though?

If you're a PC guy, then C#. If you're not a PC guy, then Java.

 

 

However, if you are most interested in building android applications then I'd pick up Flutter. Flutter is new and is getting a lot of traction.

https://www.udemy.com/courses/search/?q=flutter&src=ukw

 

But for god's sakes don't start with C lol.

 

Link to comment
Share on other sites

Link to post
Share on other sites

48 minutes ago, Ty_Cox said:

Hey @OCD-FREAK,

I see that others before this were recommending C. *sigh*... You did mention that you wanted to work for the US military, and the US military will likely want to be programming as close to the hardware as possible to prevent attacks. However, C is going to be very difficult to learn. I would never pretend to understand your capability to learn the language, however, I believe it will make it more difficult on you if you start with C.

 

Do me a favor and read over this StackOverflow QA: https://stackoverflow.com/questions/3468068/low-mid-high-level-language-whats-the-difference

This QA discusses the difference between high-level and low-level programming languages. The higher up the language is, the more easily it is to interpret in your native language.

 

First, SQL. Ignore this for now.

 

Next up, Python. Many schools have started to teach python to teenagers. Python is very easy to understand and can be very powerful in a creative person's hands. You mentioned robotics. Python guys & gals are crazy with robotics stuff.

 

After that, C# and Java. If you have large aspirations and you want to truly challenge yourself, I would start with either C# or Java.

Both of these languages are very similar in syntax, and if you learn one then you'll be able to interpret the other.

 

Which to start with though?

If you're a PC guy, then C#. If you're not a PC guy, then Java.

 

 

However, if you are most interested in building android applications then I'd pick up Flutter. Flutter is new and is getting a lot of traction.

https://www.udemy.com/courses/search/?q=flutter&src=ukw

 

But for god's sakes don't start with C lol.

 

You really helped out, but lets put difficulty aside, is it true that C is the most powerful language and if you really learn it then any other language would be a piece of cake? Surprisingly i was thought C language as my first language ever during my first year in Mechatronics (iam second year now), and I've built calculators, input/output programs, microcontroller programs, and alot of other medium level programs. My dream is to be good at C and it's relatives as well as in java and it's relatives. 

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, OCD-FREAK said:

is it true that C is the most powerful language and if you really learn it then any other language would be a piece of cake?

Language itself nowadays means little. If you want to be a good, senior software developer then you need to know the tools, libraries and latest solution available. Like Java is highly into that. In short - a developer needs real life experience with given software platform to actually know it. You may learn how to write Kernel drivers, Androids apps and Arduino code in C but to build a good web application with Python and Django you will still need some experience with that platform even if you get the Python syntax quickly.

 

If you want to be good at C and Java on a viable level then you have to write high grade code daily for few years in a team of experienced developers - but still it will be a subset of what C and Java platforms offer on the market. A developer never finishes learning.

Link to comment
Share on other sites

Link to post
Share on other sites

26 minutes ago, OCD-FREAK said:

You really helped out, but lets put difficulty aside, is it true that C is the most powerful language and if you really learn it then any other language would be a piece of cake? Surprisingly i was thought C language as my first language ever during my first year in Mechatronics (iam second year now), and I've built calculators, input/output programs, microcontroller programs, and alot of other medium level programs. My dream is to be good at C and it's relatives as well as in java and it's relatives. 

Hey @OCD-FREAK,

 

I misread your original post. I thought you were just starting out with development.

 

Before I say the following... please understand that this is from my experience within a public enterprise company for only 5 years, & hobbyist coding for ~11 years. Sooo IMO... :)

Stop coding in C and go to C++.

Your next move should be to learn architectural patterns. C++ will give you more structure in your development process. Model-view-controller is a popular one that many companies use.

Then learn OOP, google "Object-oriented programming in Microsoft C++".

Then learn Java. Do this quickly. Like you said already, if you already know C and C++ this should not be much of a challenge.

After that, I'd step back start to consider the problem and solution you are trying to produce before ever writing a single line of code. Remember all that other stuff before this? You were doing it all wrong. Learn "object-oriented design" and "UML". Get your idea on paper and then start coding.

Once you have it on paper, you'll better understand the application's requirements and you can determine if you want to code it in Java or C++ :)

Link to comment
Share on other sites

Link to post
Share on other sites

8 minutes ago, riklaunim said:

Language itself nowadays means little. If you want to be a good, senior software developer then you need to know the tools, libraries and latest solution available. Like Java is highly into that. In short - a developer needs real life experience with given software platform to actually know it. You may learn how to write Kernel drivers, Androids apps and Arduino code in C but to build a good web application with Python and Django you will still need some experience with that platform even if you get the Python syntax quickly.

 

If you want to be good at C and Java on a viable level then you have to write high grade code daily for few years in a team of experienced developers - but still it will be a subset of what C and Java platforms offer on the market. A developer never finishes learning.

you have a really great point, but obviously i will start as a junior programmer, iam doing engineering so i will not end up as a software developer, but i wish to work as an avionics system designer and embedded developer, but i like to develop android app too. one of friends is good at java and C++, so i wish that one day i will be great at java and C too :)  

Link to comment
Share on other sites

Link to post
Share on other sites

You have a specialization you want to pursue and that's a good thing to do.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Ty_Cox said:

Hey @OCD-FREAK,

 

I misread your original post. I thought you were just starting out with development.

 

Before I say the following... please understand that this is from my experience within a public enterprise company for only 5 years, & hobbyist coding for ~11 years. Sooo IMO... :)

Stop coding in C and go to C++.

Your next move should be to learn architectural patterns. C++ will give you more structure in your development process. Model-view-controller is a popular one that many companies use.

Then learn OOP, google "Object-oriented programming in Microsoft C++".

Then learn Java. Do this quickly. Like you said already, if you already know C and C++ this should not be much of a challenge.

After that, I'd step back start to consider the problem and solution you are trying to produce before ever writing a single line of code. Remember all that other stuff before this? You were doing it all wrong. Learn "object-oriented design" and "UML". Get your idea on paper and then start coding.

since you are a senior, i am sure you would be able to give me the best tips on how can i learn C and java quick and in a professional way. by the way why you suggested me to stop learning C ? if it's the best language for hardware level programming? by the way i am also doing assembler too :) 

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

×