What programing language to pick?

Programming can be defined as the art of problem solving through code, AS LONG as you know how to solve problems through code, you’ll be a good programmer.

Some languages provide different tools and have their own quirks, yes. But there’s absolutely NOTHING stopping you from learning CS concepts outside of any particular language, which is what a GOOD programmer does. Just because a language is popular doesn’t make it the only choice or THE BEST CHOICE FOR ALL, it all depends on which tasks you want to accomplish.

And yes, as “ridiculous” as you might think it sounds, a professional programmer is usually required to work with new frameworks and even new languages a lot of the times. Or maybe me and all my peers are the only “geniuses” that can switch languages when best suited for certain tasks.

(Source: I program in JS, Ruby, Python and C++)

What about my question?


Can you make a mutable data type in javascript immutable? If so, how? And tell me if using const on an object will prevent that object from being modified. If not, why.


Answer this. If you can't answer this you have no place giving advice here.

Your entire reply contains vague non-technical language like

"different tools" -- What tools? Programming languages don't have "tools".

"CS concepts"? You've gone even broader now. That could be anything in the whole field of computer science.

Putting "GOOD" in caps doesn't help your argument.

"tasks to accomplish" -- Again, this is not the kind of language a high end dev is going to use.

Neither "professional programmer". Any idiot can be a "professional programmer".

And no, in the field of software engineering a dev is not required to work in new frameworks and definitely not new languages even some of the time, never mind "a lot of the time". Superficial knowledge of multiple languages doesn't mean you're going to be using multiple languages. A dev will generally master 2-3 languages, and that's the top guys. Not many are master level in 5-10+ languages. Just because you can read/write code in a language doesn't mean you're going to be using it on a daily basis in projects.

You don't even appear to me to be an intermediate level dev let alone anywhere near "genius".

Can you answer my question above?

Can you tell me the difference between interface polymorphism and inheritance polymorphism? You won't be able to easily google that answer.

Can you explain what byte code is?

Can you explain how a typo from a very large variable name might cause bugs in a language like JavaScript compared with C# and why?
 
create web app front end and backend web developement
create mobile app
and desktop app
i already knew some basics of c c++ c# python php, but right now i want to advance or master one language that will allow me to do all the things listed above

If you know the basics as you said I would go for the classic MEAN stack (or MEVN/MERN) if you replace Angular with Vue or React. But if you are into developing apps, if you go the React path, the jump to React Native is not too steep.

I'm not a great fan of Javascript for backend but if you master it, you basically have wings to do technically ANYTHING. From hybrid app, to server-side complex backend API high-scalable development

And for prototyping is one of the best options.

Why I don't like Javascript?

99% of the code examples are pure s**t.
"Javascripters" similarly to Python developers, don't ask me why but love short programming, which is obnoxious. They might think they are really intelligent programming full of closures and one-letter-style for every single variable but this makes evolving as a programming through example, extremely hard (and for them, revisiting the code, a nightmare)

So if you want a single language to approach Javascript is always the key. But personally I would chose a multi-language approach, for example, if you have some foundations on C/C++, Rust or PHP for backend, Dart for mobile and any stack for front end (you can simplify a lot with frameworks like Vue+Vuetify and many other options)
 
I'm not going to tell you which language to learn, as everyone else has passionately done that. What I will say based on my experience of many years being a programmer, a programming lecturer on a computer science BSc and interviewing/managing hundreds of programmers over the years. Pick a language and stick with it, get seriously good at it, don't do what I did and become good at several languages and great at 1 (notice I didn't say I mastered 1 language). It dilutes your message, so when a pro Perl dev, Ruby master or a whatever Ninja says why don't you join my team, think long and hard about it. Do your best to avoid what some people consider junior languages (lots of what have been mentioned), these are the ones that are considered easy to learn, they may make it easy for you to put something together quickly but limit your ability to become a master. I still believe having C/C++ as one of my first was worth its weight in gold, thank you Dr. Bowers, it was worth it.

The next language on my list is rust, there I go again diluting my message.
 
For data science and task automation you'd absolutely want Python.

Unfortunately there's a LOT of bad advice out there and it can be very hard to make a decision. I've been a dev since the 90's btw, so I was writing code while a lot of guys here were still learning to crawl.

Ultimately you have to make your own decision, but the thing you need to be careful of in this industry is fanaticism. Ever since the early days it's been rampant. emacs vs vi, linux vs freebsd, freebsd vs openbsd etc. You'll find a lot of die-hard javascript fanatics that will convince you that it's the best thing since sliced bread, but I can tell you that out of all the main stream languages Python is one of the cleanest languages in terms of the actual syntax and how to write code. You can read any code in Python and you'll understand it. Other languages have a lot of quirks and special ways of doing things which that you need to learn the style of the programmer rather than the fundamental style of the language.

Python is strongly-typed. Javascript is weakly typed.

There's no procedural programming in javascript. It's just a big mix of everything. You aren't going to learn about interfaces, polymorphism or multiple inheritance. These things in javascript are more like "hacks". You use prototypes to achieve polymoprhism. I don't think you can implement interfaces, and javascript doesn't support multiple inheritance. There's a hacky way to do it with ES6, but again, do you really want to be learning "hacky ways", or learning the fundamentals in a clean way?

Python is imperative, procedural, OO and functional.

Python was designed to be what it is. Javascript is just a big evolution of addons, hacks and glues to do things. It's very powerful, but this is not the type of language you want to learn to be a software engineer in. It's a power tool for getting stuff done when you're already a strong developer.

Python has way more libs than js.

Most people and articles out there are just full of crap, then you have the die-hards in a language that will convince you it's the most amazing thing ever, but they're lacking the broader perspective to compare because they're so entrenched in their own daily programming practices and way of solving things.


You see this below. This is an example. His response is just "You truly have no idea what you're talking about". Notice how he added "truly" to give it more emphasis. The notion that a js programmer can "switch between languages" in a matter of weeks is beyond ridiculous. See if this guy really understands mutable vs immutable data. I doubt he's even heard of these terms let alone the ability to actually understand the difference.



In fact here's one for you.

Can you make a mutable data type in javascript immutable? If so, how? And tell me if using const on an object will prevent that object from being modified. If not, why.
I can't agree more with @splishsplash on every point.
I'm not a programmer, more like hacker kind, "make a sticks house for a quick shelter" type of guy. But I've seen everything he said, even about endless debates Windows vs Linux.
Just a minor addition: each language with it's own strong points and weaknesses.
JavaScript kills it in browser, Python is for data science, Java was made great by Android, C++ by Linux guys... And so on. Some apps do require some specific language, just because that's how it works best.
However, Python is the simplest of all. And the strongest scripting language. When you go for specific low level stuff (specific hardware, specific feature), then probably you should pick other languages.
Anyway, about syntax and similarities, yes, they look very much the same, but are so different. I admit to know nothing about immutable data, but try do "spell" a list comprehension in JavaScript.
Or how many ways there are for a simple for loop in JavaScript. Just too many.
In Python you have:

Code:
fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)
or
Code:
for x in range(6):
  print(x)
Done.

In JavaScript:

Code:
for(let i = 0; i < myArray.length; i++){
    console.log(myArray[i].name);
}
or
Code:
for (let part of myArray) {
    console.log(part.name)
}
or
Code:
myArray.forEach(function(item){
  console.log(item)
})
or
Code:
var obj = {a: 1, b: 2, c: 3};

for (const prop in obj) {
  console.log(`obj.${prop} = ${obj[prop]}`);
}
A mess, right? I haven't included all the variants, you can go with i = 0, i++; or with i = array.length, i--; and some other stuff I don't remember.
 
What about my question?


Can you make a mutable data type in javascript immutable? If so, how? And tell me if using const on an object will prevent that object from being modified. If not, why.


Answer this. If you can't answer this you have no place giving advice here.

Your entire reply contains vague non-technical language like

"different tools" -- What tools? Programming languages don't have "tools".

"CS concepts"? You've gone even broader now. That could be anything in the whole field of computer science.

Putting "GOOD" in caps doesn't help your argument.

"tasks to accomplish" -- Again, this is not the kind of language a high end dev is going to use.

Neither "professional programmer". Any idiot can be a "professional programmer".

And no, in the field of software engineering a dev is not required to work in new frameworks and definitely not new languages even some of the time, never mind "a lot of the time". Superficial knowledge of multiple languages doesn't mean you're going to be using multiple languages. A dev will generally master 2-3 languages, and that's the top guys. Not many are master level in 5-10+ languages. Just because you can read/write code in a language doesn't mean you're going to be using it on a daily basis in projects.

You don't even appear to me to be an intermediate level dev let alone anywhere near "genius".

Can you answer my question above?

Can you tell me the difference between interface polymorphism and inheritance polymorphism? You won't be able to easily google that answer.

Can you explain what byte code is?

Can you explain how a typo from a very large variable name might cause bugs in a language like JavaScript compared with C# and why?

- Depends on what you’re trying to do, if you need an object to be immutable, what you could do is use Object.assign(newObj, list, of, sources), then work on that reference, we often use this when working with React apps.
If you use const on an object you’re storing the reference to the object, not the object itself, so yes, you can still manipulate said object.
Those are like entry-level questions.

- Tools = built-in methods or even frameworks.
- Yep, I was trying to be as vague as I could.
- Don’t really care at this point.
- Never said I was a “high-end dev”. Wtf do you even mean? Senior level? SWA?
- Ok, that’s disrespectful to any swe, so see ya.
 
Man some good and some terrible advice in this thread.

Are you in a hurry to make web apps? Javascript (NodeJs, React)

Are you in a hurry to do scraping and web automation? Python

If you are not in a hurry and want to learn the fundamentals? You should pick a solid OOP language. For that id personally rechommend Java or C#. (Python works too. But it is not a pure OOP language)

My foundation was Java (not javascript). I can pick up virtually any programming language with the foundation i had. And i can build lot of things if you give me enough time.
 
Man some good and some terrible advice in this thread.

Are you in a hurry to make web apps? Javascript (NodeJs, React)

Are you in a hurry to do scraping and web automation? Python

If you are not in a hurry and want to learn the fundamentals? You should pick a solid OOP language. For that id personally rechommend Java or C#. (Python works too. But it is not a pure OOP language)

My foundation was Java (not javascript). I can pick up virtually any programming language with the foundation i had. And i can build lot of things if you give me enough time.

Couldn’t agree more.
 
OP is probably more confused than before after reading this thread :D
You are right. I feel like I should add few things.

First @OP, why you should take my advice? I've built a ton of shits.
Bots, Scrapers, Android/IOS apps, saas applications - you name it, I've done it.

I like to keep my personal identity hidden from the public. But if you contact me - I'll show you my GitHub that I've even contributed to creating a new programming language (compiler mainly).

The most important thing when you are learning programming is that you enjoy the process. There is nothing wrong with picking javascript as your first programming language to build something quickly and have fun doing it.

Will you learn some bad practices by learning JS as your first language? Sure - but as long as you keep learning and having fun it isn't hard to correct those bad mistakes.

Just pick something and don't quit. It is the most important thing. Language hardly matters. As you progress you can learn immutability, polymorphism, and all those big boy words everyone in this thread throwing at you.

Good luck.
 
- Depends on what you’re trying to do, if you need an object to be immutable, what you could do is use Object.assign(newObj, list, of, sources), then work on that reference, we often use this when working with React apps.
If you use const on an object you’re storing the reference to the object, not the object itself, so yes, you can still manipulate said object.
Those are like entry-level questions.

- Tools = built-in methods or even frameworks.
- Yep, I was trying to be as vague as I could.
- Don’t really care at this point.
- Never said I was a “high-end dev”. Wtf do you even mean? Senior level? SWA?
- Ok, that’s disrespectful to any swe, so see ya.

Yeah, you're completely wrong. Using Object.assign doesn't make anything immutable. Not even close.

What you've googled there is preventing object mutation by using Object.assign and Objecet.assign with an empty object is the same as Object.spread btw.

This has nothing to do with making an object immutable. You're very confused, which happens when you try to pretend you know what you're talking about by googling things in an attempt to sound smart.

Code:
//Using immutable

const { Map } = require('immutable');

const foo = Map({ a: 1, b: 2, c: 3 } ) ;
const bar = foo.set('b', 50);

console.log("foo.b is " + foo.get('b') + " and bar.b is " + bar.get('b'));


// Prints foo.b is 2 and bar.b is 50


// Nothing

const foo2 = { a: 1, b: 2, c: 3 };

foo2.b = 50;

console.log("foo2.b is " + foo2.b) ;

foo2.b = 2 ;

// Object.freeze

Object.freeze(foo2);

foo2.b = 50;

console.log("foo2.b is " + foo2.b) ;


// Using your Object.assign method.

foo3 = { a: 1, b: 2, c: 3 } ;

foo4 = Object.assign( {}, foo3 ) ;

foo3.b = 50 ;
foo4.b = 50 ;

console.log("foot3.b is " + foo3.b + " and foo4.b is " + foo4.b) ;

So you're just plain wrong with that one, but um, nice try.

And you didn't answer any of my other questions, which were harder. I deliberately worded them in a way that makes it hard to google an answer. You TRIED to google an answer to the first but instead you've just embarrassed yourself.
 
OP obviously the next step for you is Haskell. It's the future mate.
Don't get these guys laughing at Haskell :oops: ..I think it's going to be more popular than python and js combined in the future because of it's easy-to-use syntax and huge range of applications.

What a beautiful language. I thank my lecturers every day in my mind for forcing me to learn it for a whole semester. Very excellent information and learning times.

Take this guy's advice.
Yeah I mean we've all built a ton of shits, it's nothing to brag about.
 
Python has become a very popular language nowadays, with AI taking over the world that should be your best bet. That is the direction i am choosing too.
 
Yeah, you're completely wrong. Using Object.assign doesn't make anything immutable. Not even close.

What you've googled there is preventing object mutation by using Object.assign and Objecet.assign with an empty object is the same as Object.spread btw.

This has nothing to do with making an object immutable. You're very confused, which happens when you try to pretend you know what you're talking about by googling things in an attempt to sound smart.

Code:
//Using immutable

const { Map } = require('immutable');

const foo = Map({ a: 1, b: 2, c: 3 } ) ;
const bar = foo.set('b', 50);

console.log("foo.b is " + foo.get('b') + " and bar.b is " + bar.get('b'));


// Prints foo.b is 2 and bar.b is 50


// Nothing

const foo2 = { a: 1, b: 2, c: 3 };

foo2.b = 50;

console.log("foo2.b is " + foo2.b) ;

foo2.b = 2 ;

// Object.freeze

Object.freeze(foo2);

foo2.b = 50;

console.log("foo2.b is " + foo2.b) ;


// Using your Object.assign method.

foo3 = { a: 1, b: 2, c: 3 } ;

foo4 = Object.assign( {}, foo3 ) ;

foo3.b = 50 ;
foo4.b = 50 ;

console.log("foot3.b is " + foo3.b + " and foo4.b is " + foo4.b) ;

So you're just plain wrong with that one, but um, nice try.

And you didn't answer any of my other questions, which were harder. I deliberately worded them in a way that makes it hard to google an answer. You TRIED to google an answer to the first but instead you've just embarrassed yourself.

HAHAHA. You’re funny.
First link when you Google “object immutability” talks about Object.freeze(), I literally said it depends on what you need to do. I gave you one method us React devs use when working with components and their states.

You should take a chill pill and take yourself a bit less seriously. Anyways, won’t be responding to you anymore, hopefully OP has already made a decision and ignores our back-and-forth.
 
Last edited:
HAHAHA. You’re funny.
First link when you Google “object immutability” talks about Object.freeze(), I literally said it depends on what you need to do. I gave you one method us React devs use when working with components and their states.

You should take a chill pill and take yourself a bit less seriously. Anyways, won’t be responding to you anymore, hopefully OP has already made a decision and ignores our back-and-forth.


Well, um, obviously?

The first result on google isn't exactly going to talk about using Object.assign, since that has absolutely zero to do with making an object immutable.

You didn't give me one method, let's get that straight.

You are completely, 100% wrong and have totally mixed up the concept of "immutable object" with "object mutation". The second of which is an issue you would potentially face when using React.

And I'm sure you won't respond to me, because I am calling you out on your nonsense.

Remember, it was you who started this by saying that *I* am clueless, so I decided I would call you out.

You have quite clearly shown anyone who understands programming here that you have near zero knowledge. I highly doubt you've even written anything over 100 lines in your entire life.

Next time, don't be so keen to just randomly attack people. Especially when that person could have literally decades of experience behind them in the thing you're calling them "clueless" about.
 
IMO apps are easiest through reactJS which requires a basic understanding of HTML CSS JS and REACT
Python is always useful to know
 
Personally, I started building things without coding at all. Knowing JavaScript or any other languange is not necessary today to build apps or automate stuff.

After high school I got well paid job because I showed to one CEO, that using tools like Integromat for automations can be very effective in some cases, rather than spend much more money on a team of developers.

Have a look at no code / low code principles, you can find a LOT of way's of building almost anything without code.

E.g. there's already mentioned Integromat (automations, backend stuff), Airtable (custom crm / database), Webflow (Drag and drop website editor, that can export to raw html, css, javascript).

After actually building real things and making money along the way, I started learning Node.js and client side JavaScript.

So my point is, you don't always need to start with coding :)
 
Back
Top