Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

I want to programm my own "Alexa" (complete newbie).

Hello!

 

I am a complete newbie when it comes to programming. I have only done python for like half an hour and although I cna do basically everything with HTML, it is not really programming so I don't think it counts.

Since I have exactly no experience I would like to know: 

Is it even possible to code a "Amazon Alexa" by myself? (I know that it would take hundreds if not thousands of hours to get it completly right, especially as a newbie. But I am willing to put the time into the project.)

What language should I use? I only heard about: Java, JavaScript, C, C++, Python.

Should I try more basic programs first or should I jump right into the cold water and try to code my own Alexa? 

 

Btw. I am also planning to use Arduinos to make my code able to turn on and of lights and stuff like that.

 

If I am really stupid and this is way out of range/possibility - do not be sensitive, tell me right away please.

 

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
2 minutes ago, JohanKjeldahl7 said:

Should I try more basic programs first or should I jump right into the cold water

Yes.

You'll completely burn yourself out working on such a large project right away.

 

It may be silly, but the human mind wants accomplishments. Making your own "Amazon Alexa" fully fledged will take thousands of man-hours to fully complete, if you're going to do it on your own. Start with simpler programs.

You can of course work towards an Amazon Alexa like program, but first start with the basic things.

 

To give you an analogy. If you say you want to paint, you don't say "the first thing I'll paint is the Mona Lisa". No, you first start with the fundamentals like shapes and shading, then go into color theory, anatomy (for facial structure), etc. etc. and then you start painting the Mona Lisa.

 

Same with creating your own Amazon Alexa. The program in full includes:

- User input

- Output

- Entire algorithm, which needs to be able to change (AI)

- privacy/data/etc.

 

first master these, before working on Alexa (plus, there are probably hundreds if not thousands of people working on Alexa, all with their specific professions).

 

In short; you don't start something with a project you won't see an endgoal from in years. Start with something simpler which teaches you the basics/fundamentals which you can use in larger projects.

"We're all in this together, might as well be friends" Tom, Toonami.

Sorry if my post seemed rude, that is never my intention.

"Why do we suffer a lifetime for a moment of happiness?" - Anonymous

Link to post
Share on other sites
3 minutes ago, JohanKjeldahl7 said:

Is it even possible to code a "Amazon Alexa" by myself?

Depends on what you mean with "by myself". You can probably get something that works similarly without too much effort by using premade libraries for voice recognition and natural language processing.

 

If you mean from scratch, forget it. Even someone with decades of experience in the field would have trouble developing everything necessary starting from nothing on their own.

 

Also this is definitely not a "complete beginner" project. It's kind of like asking if you could qualify for an olympic swim team without knowing how to swim.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

What is scaling and how does it work? Asus PB287Q unboxing! Console alternatives :D Watch Netflix with Kodi on Arch Linux Sharing folders over the internet using SSH Beginner's Guide To LTT (by iamdarkyoshi)

Sauron'stm Product Scores:

Spoiler

Just a list of my personal scores for some products, in no particular order, with brief comments. I just got the idea to do them so they aren't many for now :)

Don't take these as complete reviews or final truths - they are just my personal impressions on products I may or may not have used, summed up in a couple of sentences and a rough score. All scores take into account the unit's price and time of release, heavily so, therefore don't expect absolute performance to be reflected here.

 

-Lenovo Thinkpad X220 - [8/10]

Spoiler

A durable and reliable machine that is relatively lightweight, has all the hardware it needs to never feel sluggish and has a great IPS matte screen. Downsides are mostly due to its age, most notably the screen resolution of 1366x768 and usb 2.0 ports.

 

-Apple Macbook (2015) - [Garbage -/10]

Spoiler

From my perspective, this product has no redeeming factors given its price and the competition. It is underpowered, overpriced, impractical due to its single port and is made redundant even by Apple's own iPad pro line.

 

-OnePlus X - [7/10]

Spoiler

A good phone for the price. It does everything I (and most people) need without being sluggish and has no particularly bad flaws. The lack of recent software updates and relatively barebones feature kit (most notably the lack of 5GHz wifi, biometric sensors and backlight for the capacitive buttons) prevent it from being exceptional.

 

-Microsoft Surface Book 2 - [Garbage - -/10]

Spoiler

Overpriced and rushed, offers nothing notable compared to the competition, doesn't come with an adequate charger despite the premium price. Worse than the Macbook for not even offering the small plus sides of having macOS. Buy a Razer Blade if you want high performance in a (relatively) light package.

 

-Intel Core i7 2600/k - [9/10]

Spoiler

Quite possibly Intel's best product launch ever. It had all the bleeding edge features of the time, it came with a very significant performance improvement over its predecessor and it had a soldered heatspreader, allowing for efficient cooling and great overclocking. Even the "locked" version could be overclocked through the multiplier within (quite reasonable) limits.

 

-Apple iPad Pro - [5/10]

Spoiler

A pretty good product, sunk by its price (plus the extra cost of the physical keyboard and the pencil). Buy it if you don't mind the Apple tax and are looking for a very light office machine with an excellent digitizer. Particularly good for rich students. Bad for cheap tinkerers like myself.

 

 

Link to post
Share on other sites
3 minutes ago, minibois said:

Yes.

You'll completely burn yourself out working on such a large project right away.

 

It may be silly, but the human mind wants accomplishments. Making your own "Amazon Alexa" fully fledged will take thousands of man-hours to fully complete, if you're going to do it on your own. Start with simpler programs.

You can of course work towards an Amazon Alexa like program, but first start with the basic things.

 

To give you an analogy. If you say you want to paint, you don't say "the first thing I'll paint is the Mona Lisa". No, you first start with the fundamentals like shapes and shading, then go into color theory, anatomy (for facial structure), etc. etc. and then you start painting the Mona Lisa.

 

Same with creating your own Amazon Alexa. The program in full includes:

- User input

- Output

- Entire algorithm, which needs to be able to change (AI)

- privacy/data/etc.

 

first master these, before working on Alexa (plus, there are probably hundreds if not thousands of people working on Alexa, all with their specific professions).

 

In short; you don't start something with a project you won't see an endgoal from in years. Start with something simpler which teaches you the basics/fundamentals which you can use in larger projects.

First of all, thank you very much for the detailed anwser. 

Secondly, if I want to get into programming anyway - where do I start, or actually which language should a beginner use? Does it really matter with which one I start? Not for the Alexa thing, just in general.

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
4 minutes ago, Sauron said:

Depends on what you mean with "by myself". You can probably get something that works similarly without too much effort by using premade libraries for voice recognition and natural language processing.

 

If you mean from scratch, forget it. Even someone with decades of experience in the field would have trouble developing everything necessary starting from nothing on their own.

 

Also this is definitely not a "complete beginner" project. It's kind of like asking if you could qualify for an olympic swim team without knowing how to swim.

Thank you very much for answering!

In the coding community - would you say it still counts as self made if you use premade libraries for the major part of work? Not only for the Alexa thing, more in general. Also - I already asked minibois, but a second answer never hurt anyone - with which language do you think should a total beginner start to code?

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
6 minutes ago, JohanKjeldahl7 said:

with which language do you think should a total beginner start to code?

Python is a good one!

ಠ_ಠ  if i said something stupid please let me know

Link to post
Share on other sites
2 minutes ago, JohanKjeldahl7 said:

First of all, thank you very much for the detailed anwser. 

Secondly, if I want to get into programming anyway - where do I start, or actually which language should a beginner use? Does it really matter with which one I start? Not for the Alexa thing, just in general.

In my opinion, there is no true starting point and no one language people should use.

It is often said "Don't learn to program, program to learn". The idea behind the quote is probably quite varied, but in my mind it means you shouldn't learn a specific language, you should learn concepts.

 

Many programming languages are less like actual languages, many are sort of dialects of each other.

That means skill you make in C# or Java is often quite interchangeable to any of the other languages similar to C (C++, C#, Java, Javascript, Python, etc. etc.).

For example, every language will have primitive types (the most basic of variables, for numbers, letters, sentence, etc.), so your knowledge in one language can also be applied to another language.

To me that makes it less about knowing a language and more about applying your general programming knowledge to a specific language.

 

Having said that, I think every programmer has their bias in what they think is the best language. My bias goes towards C#, as I think it provides a good balance between performance and ease of coding, a rich amount of support (for example for APIs) and it doesn't deviate too much from the established alternative languages, like Java, Javascript, etc.

Someone else might tell you to learn Python, Java, C++, etc. and their opinion would be equally valid.

 

I'd say starting programming, with a series of tutorials first, that teach you the basics/fundamentals.

In my opinion, the fundamentals are:

- Primitive types/Variables (the exact list varies per person, I'd say you just need to int, double, string, boolean, char, array)

- If (else)

- Switch case

- For-/While loop

- functions (and parameters)

These are fundamentals present in all established programming languages, so it wouldn't matter too much where you'd learn them.

 

From there on, you can follow more tutorial series, or start with relatively small projects of your own. Stuff like a calculator, morse code generator, etc.

The way people learn is different per person, but I think starting with the fundamentals just makes sense and moving towards relatively small programs to keep yourself learning more stuff and motivated makes sense.

"We're all in this together, might as well be friends" Tom, Toonami.

Sorry if my post seemed rude, that is never my intention.

"Why do we suffer a lifetime for a moment of happiness?" - Anonymous

Link to post
Share on other sites
10 minutes ago, JohanKjeldahl7 said:

would you say it still counts as self made if you use premade libraries for the major part of work?

It's not a competition, you make what you want to make however you think it should be made. If you don't have a good reason not to use a premade library then you should just use it. Don't reinvent the wheel unless it's out of necessity or for learning purposes.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

What is scaling and how does it work? Asus PB287Q unboxing! Console alternatives :D Watch Netflix with Kodi on Arch Linux Sharing folders over the internet using SSH Beginner's Guide To LTT (by iamdarkyoshi)

Sauron'stm Product Scores:

Spoiler

Just a list of my personal scores for some products, in no particular order, with brief comments. I just got the idea to do them so they aren't many for now :)

Don't take these as complete reviews or final truths - they are just my personal impressions on products I may or may not have used, summed up in a couple of sentences and a rough score. All scores take into account the unit's price and time of release, heavily so, therefore don't expect absolute performance to be reflected here.

 

-Lenovo Thinkpad X220 - [8/10]

Spoiler

A durable and reliable machine that is relatively lightweight, has all the hardware it needs to never feel sluggish and has a great IPS matte screen. Downsides are mostly due to its age, most notably the screen resolution of 1366x768 and usb 2.0 ports.

 

-Apple Macbook (2015) - [Garbage -/10]

Spoiler

From my perspective, this product has no redeeming factors given its price and the competition. It is underpowered, overpriced, impractical due to its single port and is made redundant even by Apple's own iPad pro line.

 

-OnePlus X - [7/10]

Spoiler

A good phone for the price. It does everything I (and most people) need without being sluggish and has no particularly bad flaws. The lack of recent software updates and relatively barebones feature kit (most notably the lack of 5GHz wifi, biometric sensors and backlight for the capacitive buttons) prevent it from being exceptional.

 

-Microsoft Surface Book 2 - [Garbage - -/10]

Spoiler

Overpriced and rushed, offers nothing notable compared to the competition, doesn't come with an adequate charger despite the premium price. Worse than the Macbook for not even offering the small plus sides of having macOS. Buy a Razer Blade if you want high performance in a (relatively) light package.

 

-Intel Core i7 2600/k - [9/10]

Spoiler

Quite possibly Intel's best product launch ever. It had all the bleeding edge features of the time, it came with a very significant performance improvement over its predecessor and it had a soldered heatspreader, allowing for efficient cooling and great overclocking. Even the "locked" version could be overclocked through the multiplier within (quite reasonable) limits.

 

-Apple iPad Pro - [5/10]

Spoiler

A pretty good product, sunk by its price (plus the extra cost of the physical keyboard and the pencil). Buy it if you don't mind the Apple tax and are looking for a very light office machine with an excellent digitizer. Particularly good for rich students. Bad for cheap tinkerers like myself.

 

 

Link to post
Share on other sites
21 minutes ago, JohanKjeldahl7 said:

would you say it still counts as self made if you use premade libraries for the major part of work?

You are using libraries as soon as you write

#include <stdio.h>

 

So unless you are going to program in assembly, or write your own C compiler and libc, nearly all the code you will ever write will be dependent on premade libraries.

Link to post
Share on other sites
6 minutes ago, minibois said:

In my opinion, there is no true starting point and no one language people should use.

It is often said "Don't learn to program, program to learn". The idea behind the quote is probably quite varied, but in my mind it means you shouldn't learn a specific language, you should learn concepts.

 

Many programming languages are less like actual languages, many are sort of dialects of each other.

That means skill you make in C# or Java is often quite interchangeable to any of the other languages similar to C (C++, C#, Java, Javascript, Python, etc. etc.).

For example, every language will have primitive types (the most basic of variables, for numbers, letters, sentence, etc.), so your knowledge in one language can also be applied to another language.

To me that makes it less about knowing a language and more about applying your general programming knowledge to a specific language.

 

Having said that, I think every programmer has their bias in what they think is the best language. My bias goes towards C#, as I think it provides a good balance between performance and ease of coding, a rich amount of support (for example for APIs) and it doesn't deviate too much from the established alternative languages, like Java, Javascript, etc.

Someone else might tell you to learn Python, Java, C++, etc. and their opinion would be equally valid.

 

I'd say starting programming, with a series of tutorials first, that teach you the basics/fundamentals.

In my opinion, the fundamentals are:

- Primitive types/Variables (the exact list varies per person, I'd say you just need to int, double, string, boolean, char, array)

- If (else)

- Switch case

- For-/While loop

- functions (and parameters)

These are fundamentals present in all established programming languages, so it wouldn't matter too much where you'd learn them.

 

From there on, you can follow more tutorial series, or start with relatively small projects of your own. Stuff like a calculator, morse code generator, etc.

The way people learn is different per person, but I think starting with the fundamentals just makes sense and moving towards relatively small programs to keep yourself learning more stuff and motivated makes sense.

Thank you for this very informative post!

I very much appreciate it and I love the quote at the beginning. I already heard it somewhere a long time back, not sure where tho...

 

I will do as you said - learn concepts and the fundamentals/basics. The calculator idea sounds very interesting, maybe I can try this in a few months when I know enough about the basics to try.

 

I have one last question if you don't mind: What kind of editor/coding program (how do I call this?) do you use? Is there a different editor for every language? Or do I only need one for multiple languages?

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
2 minutes ago, badreg said:

You are using libraries as soon as you write


#include <stdio.h>

 

So unless you are going to program in assembly, or write your own C compiler and libc, nearly all the code you will ever write will be dependent on premade libraries.

So it is like writing on a piece of paper? You could try and make your own piece of paper, but if you have one, why not use it? I know it is kind of a stuid comparrison, but I think you know what I mean with it...

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
2 minutes ago, JohanKjeldahl7 said:

I have one last question if you don't mind: What kind of editor/coding program (how do I call this?) do you use? Is there a different editor for every language? Or do I only need one for multiple languages?

It's usually called an "IDE" (Integrated Development Environment). You could work with a simple text editor and a command line compiler, but a tool that e.g. highlights syntax, points our syntax errors etc. is a huge help.

 

Some IDEs support only a single language, some support multiple languages. There's also "text editors" like VS Code that support "everything" through the power of plugins. So it really depends on what programming language you use and which tool you feel most comfortable with.

 

Just now, JohanKjeldahl7 said:

So it is like writing on a piece of paper? You could try and make your own piece of paper, but if you have one, why not use it? I know it is kind of a stuid comparrison, but I think you know what I mean with it...

In a sense, yes. Maybe compare it to using graph paper, a ruler, a compass and so on. You don't need those tools, by why reinvent the wheel? Pretty much all programs use libraries for certain aspects. The more low level they are, the more generic/the more common those functions are, the more sense it makes to use a library for it. Not only do you save on work that has been done billions of times before, you can also be fairly certain it has been tested/validate far more thoroughly than anything you could write yourself.

Remember to quote or @mention others, so they are notified of your reply

Link to post
Share on other sites
3 minutes ago, JohanKjeldahl7 said:

So it is like writing on a piece of paper? You could try and make your own piece of paper, but if you have one, why not use it? I know it is kind of a stuid comparrison, but I think you know what I mean with it...

Not really.

 

It's more like trying to invent calculus, but not accepting that addition already exists, and coming up with your own system for addition. Computer science is a lot like mathematics. Your work builds upon the foundation of work that has already been done.

Link to post
Share on other sites
1 minute ago, badreg said:

Not really.

 

It's more like trying to invent calculus, but not accepting that addition already exists, and coming up with your own system for addition. Computer science is a lot like mathematics. Your work builds upon the foundation of work that has already been done.

The comparison helped me a lot to understand it better. Thank you! Also - good I like mathematics then I guess :)

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
1 minute ago, JohanKjeldahl7 said:

I have one last question if you don't mind: What kind of editor/coding program (how do I call this?) do you use?

You can use any text editor, but you should really use an IDE. "Integrated development environment".

This is basically a text editor, but with so much more features, such as (but not limited to):

- Predictions and suggestions (the IDE often knows what you will type next, before you have typed it. These tools are very handy time-savers)

- Error lines/messages. See these lines like the error lines in Microsoft Word, warning you what is going wrong

- Often it will also include a compiler, which turns your code into a program your PC can run.

 

I use Microsoft Visual Studio, as I mainly use C#. Visual Studio is as an entire IDE for C#, C++ Visual Basic and some more, but can also be used as a text editor for many more languages.

5 minutes ago, JohanKjeldahl7 said:

Is there a different editor for every language? Or do I only need one for multiple languages?

It would depend on the language.

There are IDEs fit for different languages (like Visual Studio) and there are also IDEs fit for one language. There are often different options for one language. it's all personal preference which you like to use.

 

 

When working on HTML, you will use a text editor to make the HTML and a webbrowser to view the HTML.

An IDE often combines these two, by giving you a way to program and view your program in that one IDE. As with HTML, which text editor/IDE you use is completely up to you.

6 minutes ago, JohanKjeldahl7 said:

So it is like writing on a piece of paper? You could try and make your own piece of paper, but if you have one, why not use it? I know it is kind of a stuid comparrison, but I think you know what I mean with it...

You use libraries in cases where it just doesn't make sense to make something yourself.

Where the effort of inventing something new, compared to using something existing makes sense.

 

If you want to make a kit for people to be able to make a drawing. Would you make your own pencils and own paper and sell that to the customer?

Probably not, you would get a supplier of pencils and a supplier of paper, bundle these two and sell that to a customer.

That does however make you reliant on those suppliers, so if you have the ability to do that work yourself and it's reasonable, you do it.

 

This video goes over timezones, but from a programmer's perspective and shows an example where you should use a library:

 

 

In general, Computerphile and Tom Scott videos are a good resource for expanding the way you think about programming and computers.

For example, this video would be quite interesting, but perhaps most interesting for someone who's already something experienced with programming (knows the fundamentals and has applied them in a couple programs):

 

"We're all in this together, might as well be friends" Tom, Toonami.

Sorry if my post seemed rude, that is never my intention.

"Why do we suffer a lifetime for a moment of happiness?" - Anonymous

Link to post
Share on other sites
3 minutes ago, minibois said:

You can use any text editor, but you should really use an IDE. "Integrated development environment".

This is basically a text editor, but with so much more features, such as (but not limited to):

- Predictions and suggestions (the IDE often knows what you will type next, before you have typed it. These tools are very handy time-savers)

- Error lines/messages. See these lines like the error lines in Microsoft Word, warning you what is going wrong

- Often it will also include a compiler, which turns your code into a program your PC can run.

 

I use Microsoft Visual Studio, as I mainly use C#. Visual Studio is as an entire IDE for C#, C++ Visual Basic and some more, but can also be used as a text editor for many more languages.

It would depend on the language.

There are IDEs fit for different languages (like Visual Studio) and there are also IDEs fit for one language. There are often different options for one language. it's all personal preference which you like to use.

 

 

When working on HTML, you will use a text editor to make the HTML and a webbrowser to view the HTML.

An IDE often combines these two, by giving you a way to program and view your program in that one IDE. As with HTML, which text editor/IDE you use is completely up to you.

You use libraries in cases where it just doesn't make sense to make something yourself.

Where the effort of inventing something new, compared to using something existing makes sense.

 

If you want to make a kit for people to be able to make a drawing. Would you make your own pencils and own paper and sell that to the customer?

Probably not, you would get a supplier of pencils and a supplier of paper, bundle these two and sell that to a customer.

That does however make you reliant on those suppliers, so if you have the ability to do that work yourself and it's reasonable, you do it.

 

This video goes over timezones, but from a programmer's perspective and shows an example where you should use a library:

 

 

In general, Computerphile and Tom Scott videos are a good resource for expanding the way you think about programming and computers.

For example, this video would be quite interesting, but perhaps most interesting for someone who's already something experienced with programming (knows the fundamentals and has applied them in a couple programs):

 

One more time: THANK YOU! I really appreciate you for taking your time and helping me out :)

I will definitely look into IDEs and VisualStudio, as a quick google search recommended it as well.

I also will watch the videos and look into the channels you recommended to get started.

So - thanks for your time, I am going to watch some videos and download VisualStudio :)

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
19 minutes ago, JohanKjeldahl7 said:

One more time: THANK YOU! I really appreciate you for taking your time and helping me out :)

I will definitely look into IDEs and VisualStudio, as a quick google search recommended it as well.

I also will watch the videos and look into the channels you recommended to get started.

So - thanks for your time, I am going to watch some videos and download VisualStudio :)

Visual Studio is only a good idea if you want to dive into the mentioned languages. C+ and C++ are not really ideal starting points (though certainly doable).

 

Learning languages means learning syntax of that specific language and their eco system, learning to program means understanding the most fundamental concepts of every higher programming language. In that sense it is similar to real languages: the concepts at the core are (almost) always the same. (almost) Every spoken (dead or alive) language has words to express actions (verbs), things (nouns), states/qualities (adjectives) and most likely relationships (pronouns). There might be syntactic sugar on top of it, there might be differences in grammar and obviously things have different names but at the end of the day, the structure is (almost) always similar. Once you understand these fundamental parts learning another language is mostly just a matter of investing time to learn the specific ways those fundamentals work.

 

Learning to code and at some point to program has never been easier than it is these days - free tutorials everywhere, huge ecosystems of resources readily available, free and paid courses. 20 years ago, learning things was a lot more complicated.

 

Choosing a good starting point depends on what you're mostly interested in. Python is very popular and a good choice for machine learning and data science, it is also very popular at universities. JavaScript is one of the integral and fundamental parts of the dynamic web and is getting more and more popular for backends (taking away market share from PHP) thanks to nodeJS. PHP basically built the web, almost all the websites used to use PHP on their servers to run. C# and Java (they are almost the same, MS wanted to exclusively license Java, couldn't and then just copied it) are super popular with enterprise software development and offer higher performance than all of the previously mentioned languages. C++ is still the language of choice if you need raw performance on lower levels. C is still the first language of choice when you're working with microcontrollers (though Rust is interesting as well). There are also more niche languages that are mostly used in very niche industries or parts of industries or have been developed to be used in very specific applications: Fortran, R. Then there are more OS-specific (ish) languages like Apple's Swift.

 

And to make the choice even harder: more and more tools evolve to push certain languages into applications you'd usually haven chosen a different language before. You can build web applications with C# thanks to ASP.NET (in many variations even), Swift has a similar stack on offer, you can embed Java into the browser. You can also develop desktop cross platform applications with Javascript thanks to Electron and develop 3D games with OpenGL shaders thanks to 3d engines like babylon.js. You can write code running in a browser initially written in i.e. C++ by transpiling it to WebAssembly.

 

And asking 10 people for their opinion on which language to start with will give you 11 answers - most people have a bias.

 

It is true that once you understand the fundamental concepts and building blocks of programming languages, moving to a different one is not that hard but it still takes time, learning about the eco system, getting comfortable with the syntax and getting your development environment right. So it is easier to pick a language and to stick with it for a while. 

 

So first think about what it is you want to do, then pick a popular language (or language stack) in that field, then try the most popular IDE (at least as a start) and stick with that for a while.

 

Oh and being able to code and understanding the fundamental concepts of a programming language does not mean you're able to develop and engineer good applications from scratch. That's like expecting to write an award winning book after learning a foreign language for a year. Ain't gonna happen. There are patterns and concepts building on top of the fundamental building blocks of programming languages. Writing a small calculator is a nice exercise is good as a starting point but it is trivial in terms of information flow. There are just not many things happening in there. Even without any knowledge of programming and coding it is easy to have an Arduino board make 2 LEDs blink. That's a good excercise to get started. But there's a long long long way to go before you could even remotely think about programming a car's ECU. That's the biggest hurdle to wrap your head around: understanding how to structure big applications, to model information flow, to design communication patterns and protocols. That's what makes it engineering - many people working in the field as programmers never made that jump. It's the engineering part that makes or breaks a project. If you botch the engineering part your code base will turn into a barely usable hot mess very quickly.

Use the quote function when answering! Mark people directly if you want an answer from them!

Link to post
Share on other sites
7 minutes ago, bowrilla said:

Visual Studio is only a good idea if you want to dive into the mentioned languages. C+ and C++ are not really ideal starting points (though certainly doable).

 

Learning languages means learning syntax of that specific language and their eco system, learning to program means understanding the most fundamental concepts of every higher programming language. In that sense it is similar to real languages: the concepts at the core are (almost) always the same. (almost) Every spoken (dead or alive) language has words to express actions (verbs), things (nouns), states/qualities (adjectives) and most likely relationships (pronouns). There might be syntactic sugar on top of it, there might be differences in grammar and obviously things have different names but at the end of the day, the structure is (almost) always similar. Once you understand these fundamental parts learning another language is mostly just a matter of investing time to learn the specific ways those fundamentals work.

 

Learning to code and at some point to program has never been easier than it is these days - free tutorials everywhere, huge ecosystems of resources readily available, free and paid courses. 20 years ago, learning things was a lot more complicated.

 

Choosing a good starting point depends on what you're mostly interested in. Python is very popular and a good choice for machine learning and data science, it is also very popular at universities. JavaScript is one of the integral and fundamental parts of the dynamic web and is getting more and more popular for backends (taking away market share from PHP) thanks to nodeJS. PHP basically built the web, almost all the websites used to use PHP on their servers to run. C# and Java (they are almost the same, MS wanted to exclusively license Java, couldn't and then just copied it) are super popular with enterprise software development and offer higher performance than all of the previously mentioned languages. C++ is still the language of choice if you need raw performance on lower levels. C is still the first language of choice when you're working with microcontrollers (though Rust is interesting as well). There are also more niche languages that are mostly used in very niche industries or parts of industries or have been developed to be used in very specific applications: Fortran, R. Then there are more OS-specific (ish) languages like Apple's Swift.

 

And to make the choice even harder: more and more tools evolve to push certain languages into applications you'd usually haven chosen a different language before. You can build web applications with C# thanks to ASP.NET (in many variations even), Swift has a similar stack on offer, you can embed Java into the browser. You can also develop desktop cross platform applications with Javascript thanks to Electron and develop 3D games with OpenGL shaders thanks to 3d engines like babylon.js. You can write code running in a browser initially written in i.e. C++ by transpiling it to WebAssembly.

 

And asking 10 people for their opinion on which language to start with will give you 11 answers - most people have a bias.

 

It is true that once you understand the fundamental concepts and building blocks of programming languages, moving to a different one is not that hard but it still takes time, learning about the eco system, getting comfortable with the syntax and getting your development environment right. So it is easier to pick a language and to stick with it for a while. 

 

So first think about what it is you want to do, then pick a popular language (or language stack) in that field, then try the most popular IDE (at least as a start) and stick with that for a while.

 

Oh and being able to code and understanding the fundamental concepts of a programming language does not mean you're able to develop and engineer good applications from scratch. That's like expecting to write an award winning book after learning a foreign language for a year. Ain't gonna happen. There are patterns and concepts building on top of the fundamental building blocks of programming languages. Writing a small calculator is a nice exercise is good as a starting point but it is trivial in terms of information flow. There are just not many things happening in there. Even without any knowledge of programming and coding it is easy to have an Arduino board make 2 LEDs blink. That's a good excercise to get started. But there's a long long long way to go before you could even remotely think about programming a car's ECU. That's the biggest hurdle to wrap your head around: understanding how to structure big applications, to model information flow, to design communication patterns and protocols. That's what makes it engineering - many people working in the field as programmers never made that jump. It's the engineering part that makes or breaks a project. If you botch the engineering part your code base will turn into a barely usable hot mess very quickly.

Wow, that was a lot of information, but I really appreciate it and read it carefully - thank you!

After what you wrote about the use-cases - I think C++ and/or C will be my choice, also if it takes some more time to get started. I am also thinking a lot about doing stuff with Arduinos - that's why I think about C and also I would do a lot of automatic calculators for chemistry calcualtions - that's why I think C++ is a good choice if I understood everything correctly. (?)

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
2 minutes ago, JohanKjeldahl7 said:

Wow, that was a lot of information, but I really appreciate it and read it carefully - thank you!

After what you wrote about the use-cases - I think C++ and/or C will be my choice, also if it takes some more time to get started. I am also thinking a lot about doing stuff with Arduinos - that's why I think about C and also I would do a lot of automatic calculators for chemistry calcualtions - that's why I think C++ is a good choice if I understood everything correctly. (?)

C++ is a great language but not an easy one to learn and you better stick with one language at first. There are some ways to get python to run on Arduinos I think. Rust would be a valid alternative to C as long as there's a compiler available for the MCU of your choice - it's a lot more approachable. For science and calculations, Python is a good choice or Fortran (very popular on supercomputers at universities).

 

In terms of first results, languages like Python, JavaScript and Ruby are easier than plain C++. Going the route with full fletched IDEs C++ gets easier to have programs with some GUI.

 

So I'd say go with one of the following 3: C++, Python or Rust. Depends on what you want to do most at the beginning. Python will definitely be the easiest of those, C++ the most powerful and versatile but also the most complicated to get right, Rust is more niche but makes applications you'd usually choose C++ or C for a bit more easier and safer.

 

Finding a good beginner tutorial for C++ will be more challenging than finding a Python introduction crash course. For C++, try to find something that also explains how to setup your IDE and compiler.

Use the quote function when answering! Mark people directly if you want an answer from them!

Link to post
Share on other sites
6 minutes ago, bowrilla said:

C++ is a great language but not an easy one to learn and you better stick with one language at first. There are some ways to get python to run on Arduinos I think. Rust would be a valid alternative to C as long as there's a compiler available for the MCU of your choice - it's a lot more approachable. For science and calculations, Python is a good choice or Fortran (very popular on supercomputers at universities).

 

In terms of first results, languages like Python, JavaScript and Ruby are easier than plain C++. Going the route with full fletched IDEs C++ gets easier to have programs with some GUI.

 

So I'd say go with one of the following 3: C++, Python or Rust. Depends on what you want to do most at the beginning. Python will definitely be the easiest of those, C++ the most powerful and versatile but also the most complicated to get right, Rust is more niche but makes applications you'd usually choose C++ or C for a bit more easier and safer.

 

Finding a good beginner tutorial for C++ will be more challenging than finding a Python introduction crash course. For C++, try to find something that also explains how to setup your IDE and compiler.

Ok, so if I understood everything I learned today correctly, starting with Python will also help me getting started in C++ r.g. right? So if I do Python for half a year, it should be much easier to get started with C++ right?

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
3 minutes ago, JohanKjeldahl7 said:

Ok, so if I understood everything I learned today correctly, starting with Python will also help me getting started in C++ r.g. right? So if I do Python for half a year, it should be much easier to get started with C++ right?

You'll get easier and quicker results and you'll learn the fundamentals quicker. That's less to wrap your head around if you choose to learn C++. But half a year is not much time to learn stuff.

Use the quote function when answering! Mark people directly if you want an answer from them!

Link to post
Share on other sites
6 minutes ago, bowrilla said:

You'll get easier and quicker results and you'll learn the fundamentals quicker. That's less to wrap your head around if you choose to learn C++. But half a year is not much time to learn stuff.

Ok, then I will start with Python since it is easier and is nice for my usecases.

Thank you very much for your advice and time!

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites
1 minute ago, JohanKjeldahl7 said:

Ok, then I will start with Python since it is easier and is nice for my usecases.

Thank you very much for your advice and time!

Have fun!

ಠ_ಠ  if i said something stupid please let me know

Link to post
Share on other sites
8 hours ago, shadow_ray said:

Have fun!

Thank you, I will :)

But now, fellow gamers, that was it for me. Please keep in mind, that this is just my personal opionion. Your system shall be cooled forever, see you next time.

Link to post
Share on other sites

If you want an easy starting point you can use C# and windows speech recognition engine. You need about 15 lines of code to get the microphone input converted into text or send text to the speech synthesizer so it output in your speakers. Then 99% of the job is to interpret and generate text.

 

Edit :

Just found the correct class to use and these basic 5 lines of code works to return the spoken audio to text

https://docs.microsoft.com/en-us/dotnet/api/system.speech.recognition.speechrecognitionengine?view=netframework-4.8

 

the "e.Result.Text" in the event at the end of the code is the text of what has been recognized

 

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
Newegg

×