Which programming languages should i learn?

Which programming languages should i learn?
0.0 0

#1

Hi everybody :slightly_smiling_face:,

I’m pretty new to this community and wanted to ask for a favour. I would be very grateful for some response.

In my studies I just learned the basics of C and a little bit of C++/Assembler and wasn’t really interested in it (the professor wasn’t really inspiring and the programs we coded were really boring and had no use for real world applications).

So I graduated in my BEE (focus on automatization) last year and my thesis was about industry4.0-compliant technologies and their application fields and use. In this time I got highly interested in information-technologies… I read alot about ICT, networks, the ISA95-Pyramid, OPC UA, IoT etc. and found it amazing.

Nowadays I am employed in a small company as a technical student (30h/week … Want to continue with my master) and handle alot of different tasks like assist the technical project management, maintain data inside software and do some evaluations in Excel. But the company gives me the opportunity to set foot into the digitalization-sector because I handled my stuff pretty well and they don’t have any employee in this area (just normal IT) . They want to create an infrastructure / network and get data outside of the production machines control systems or implement devices with internet access. Also this data should be visualized on some UI to be visible for the companys head. And the last point is to surpress as much information on paper as possible. I tried to inform myself and the first thing I thought was to learn SQL, because I have to do alot of evaluation with lots of data and I have to store the data of the machines/devices. Then I found the two definitions of data analysts (learning Python) and full web stack developers (front-end to back-end html5,css3,JS,PhP/asp.net,SQL).

The application field of data analysts sounds more like they have to fulllfill a scientific task (e.g. deep learning). So I thought it would be the best way to learn the languages of a full web stack dev. I could visualize the data with html5,css3,JS and handle the back-end with PhP and SQL. I also can optimize my evaluation with learning SQL.

Now my questions are: Am I on the right track? And what should I learn to cover the area of getting data out of internet-enabled devices / machines (most machines working with Siemens and Codesys PLCs)?

Thanks in advance!

Greetings
eikelele


#2

First so happy you could turn hobby and something you liked(coding) into business, nothing better than this.

About the SQL part, I think you are right. I suggest you start reading about Relational Database Management Systems(RDBMS) first, which is a academic stuff. It gives you a very great, and clear view about what are database really are, I think it’s very effective.

Next once you understand RDBMSs, you may go a little more pro and have some study(believe it may need just some days) about ORDBMS(Objective RDBMS).

Now you are ready to study some SQL standards, and maybe try(or ask for recommendation) about a good/common database system and start coding. If you ask me, go for PostgreSQL.

Now about the backend web part. I’m not telling you python and php are bad, but I think future could be in hand of Swift. But it’s in first steps about web, but the great news is, Swift is backed by Apple and IBM.
Please note php and python may could help you to start your work out.

About

It really depends. If those devices talk HTTP, so you can grab data even with curl. You need to get more detailed data. But they might talk with another(own) protocol, now stuffs a little harder. you need to read and understand the protocol first, and then code the client.
I’m not sure if streaming/socket is possible with php or not!? neither python.

For now you may ask the people/company to grab some technical documentation about devices you like connect. Start reading them. Since you have some c/c++ knowledge, I think you will understand it very easy(hope it’s based on HTTP, or a common protocol).

Ask any question then. Once you know every detailed info, then you can make a good decision based on your fav lang and suggestions from other people.

Keep goin on great work, hope you get more greater level at work.
Happy programming.


#3

First off, thanks for the really fast response on my topic! :slightly_smiling_face:

The company already uses Microsoft databases and I started to learn MS SQL with the Microsoft SQL Server Management Studio 17. The IT created a little database for me without any admin permissions to test stuff out. I bought a book from O’Reilly about MS databases but it is really theoretical and the excercises are not that good… Looking forward for better learning material. I understood the basics of databases (DQL (select),DDL (insert/update/delete) ,DML(create/alter/drop) but no DCL) and the normalization forms (first to third) and stopped at join-commands.

Any recommendations on books or exercises learning RDBMS / ORDBMS related to MS SQL?

C/C++ was really basic for me… Nothing special and it is like 3 years ago I heard anything of that… :confused:

For my first project I want to collect temperature data out of internet-enabled temperature-measurement-units and visualize it. I contacted the company that build the units and they use HTML5/CSS3/JavaScript/jQuery and HTTP-Requests. I nearly completed the whole first section “Responsive Web Design Certification” except the projects at the end and I’m looking forward do to that now. So i already have a basic understanding for structuring and visualize a web-interface. I thought it would be a good way to start off.

So you say you won’t do the front-end stuff and start from the back-end? I don’t have any idea how it works to get data into my DB and visualize it. I do this with PhP/Swift/Python? Pull off data with a client I programmed? I just know basics of client-server-relationships.

Checking protocols don’t gives me too much information… But I know and understand the layers of the OSI/ISO model. I can enter the device via its own web server on the :80 port with my web browser and it has named modbus tcp in it’s interface description. What languages can i use for that case?

I’m missing alot of basic knowledge in this area… There is no IT guy which can help me with this issues. Sorry if I’m asking too basic questions. The company would also pay courses for speedup my learning curve but I don’t know which courses I should take there.

But this issue makes me even more thirsty for knowledge and I really want to challenge it with all my time I have.


#4

Great! MS SQL is an enterprise! be careful to not make mess with it :smiley:

The latest version MS SQL I worked is 2005 and 2000, not sure if it has awesome improvements and missed stuffs all other DB had. Anyway indeed works for you.

Well I still don’t know about your exact case-study. Maybe you don’t need any database. Let say you need to read some data from some device and show them at real time whenever a client request. So since data is realtime, you may not anyplace to save data, unless you like to save data prioritically.

O’Reilly books are good ones. but someone like for dummies title which is more basic, or McGrew, Manning, Wrox, anything…

This is very great you already know some basic info as DDL, DML, and DQL. These are basic/ISO SQL stuffs. The one I stated about RDBMS systems is different. I think this is good to know how does a generic DBMS system work at the first. There are more advanced stuffs you would learn on BDMS such as table locking, type of table/data splitting(and what for?), indexes, queues, brokers, types, security, performance, and …

Sorry about it, you may ask about some student and MS SQL expert, I’ve got nothing in my mind to share, sorry.

Forget the visualization and UI stuffs for now, that part is super easy, first you need to have data for visualization. For data you need a backend coding. Don’t even be worry about this part.

Again it depends, maybe you don’t need any DB, I don’t know. You need to explain the work progress and flow in detail.

You do it with one of them. You Either code the backend(server) using PHP, or python or Swift
NOTE: before go for any of them(especially Swift and python) make sure there are some driver to allow you connect from swift/python to MS SQL. I think PHP has some driver/way to allow you connect to MS SQL, but not sure about Swift and Python.

This could be very great, or very basic! I don’t know.

That OSI/ISO is related to low-level transportation level(like TCP/IP, IPX/SPX), not application level communication(like HTTP, FTP, TSL).
Indeed the device comes with some documentation about how to deal with it, how to query and control. This could be as a API call too(if API, usually C API).

Great, seems it has a HTTP interface. but it doesn’t mean you surely can use the same you check dat using that 80 port(80 is non-secure HTTP std port)
Note the API could be provided with the same 80 port, usign same path(url), or different port, different path, different data type, etc… no one can tell except the documentation. (try to find the device model name, so you may find the online documentation)

Could be based on HTTP, but not sure, this could be HTTPS too. More detailed info needed.

We(including me) are here to help each other. I try to help you if I understand and can help you of course.

And now my suggestion:
I suggest you forget the MS SQL for now, I suggest you start SQL with PostgreSQL(not becasue I love it, becasue it has great community, free, fast and great).
Select Linux for your platform, I suggest go for CentOS(it’s the one I call a reliable awesome linux dist)
For web if you go for Swift(it needs some OOP vision and some programming skill for start, and could be a little harder than PHP and Python). if you could get the Swift working, you’re kind of iOS and MacOS developer too. But I admit Swift could be more challenging than PHP and Python.

And very important thing, you must be patient. tell your boss you need time to do the job well. no rush.

Keep going on great work. Happy programming.


#5

Re SQL, I’d focus on learning the different joins and when to use them. Most things beyond the very simplest tasks will need them, so it’s good to focus on that. What @Null_dev said as well basically, I don’t have any specific recommendations as I’ve just kinda picked things (slowly) up as I went along.

Once you’re relatively fluent, The Art of SQL is really fantastic. It’s not really specific to one RDBS, and doesn’t teach you basics, but it does teach you good practice, the why and the how, and it’s very well written (in the style of The Art of War, definitely not dry). I was recommended it by a developer at my last work, was an excellent rec. It’s aimed at experienced users but I started out reading it whilst knowing barely any SQL and it’s been really useful.


#6

I agree with @NULL_dev and @DanCouper… Firstly YES you are on the right track!, You nearly completed the “Responsive Web Design Certification” all you need to do is continue the lesson, what you’re looking for is on the “Data Visualization Certification” and “APIs and Microservices Certification” since you are already familiar with relational databases in the coming lessons you’ll learn about MongoDB it’s a non relational database like json objects, it’s all javascript… you’ll learn about MEAN(MongoDB, Express,Angular, NodeJS) stack or MERN(MongoDB,Express, React,NodeJS) stack. MongoDB University offers free courses for both beginners and advance, i already taken and passed 3 courses, you can check it out here: https://university.mongodb.com/ i suggest once you’re done with react lessons here, start enrolling M001, M101J and M121… Everything you learn here is useful with what you’ll learn in MongoDB University.


#7

Thanks for the response.:slightly_smiling_face:

I’ll order the book and give it a try. So learning SQL and its concepts itself will be seperated from the DBMS. The DBMS will be Microsoft SQL Server for my company… But I’m still confused about the back-end language. How do I decide which one I should pick up? I mean in general the PLCs can provide data via Modbus von TCP.

I also used a OPC UA Server… How can i use that?

Greetings!


#8

The data shall be displayed live and stored, too. So I can build a report out of the temperature data for a week/month. Modbus on TCP as Slave/Master on TCP-Port 502

NodeJs, Python and PhP have drivers available for SQL Server … Swift doesn’t have a driver. Till now the one coder we have (unfortunately he hasn’t any time left for me) uses PhP. I can spend alot of time in learning the backend language but I’m just confused which will be the best :confused: As said, the most devices provide data over Modbus on TCP(Codesys PLCs or devices) or ProfiNET (Siemens PLCs).

I have to learn alot more about APIs … I just know that I can connect different protocols with it. (cross-compliant)

Thanks again for your answer! :slightly_smiling_face:


#9

Thanks for your answer!

I’ll move on with the lessons anyway… But maybe I shall focus more on the more relative sections like you said(APIs and Data Visualization". I’ll look up the University on mongodb and give it a shot! Thanks! But does it affect my behaviour of programming the Microsoft SQL Server Databases I have to design/query in the future or can I use my MongoDB knowledge there, too?


#10

I’m not the best person to ask here, I’m just furiously Googling what it is you work on. It’s specialised and really interesting (and whoah, if you get a good handle on the tech you’re talking about, :money_with_wings: :money_with_wings: :money_with_wings: )

Tbh, I’d look at .Net; it was all originally Windows-only anyway, and MS leads in this, and should have the best integrations: there’s a load of stuff for IoT devices you should be able to plug in to grab data. Difficult to find resources specifically on OPC because it’s specialised and designed for industrial applications, but .Net has vast reams of info available. I assume you’ll have Visual Studio Enterprise licences as well, so free access to Pluralsight courses?

Frontend, well, you’ve got access to all of the JS ecosystem, and you can get that all plugged into any .Net app that you’ve created as a client for the data you’re pulling out of the OPC server


#11

If you search for Modbus, you see some specification and good documentation. I think you could get some hand of C for that.

Anything you like, and works for you. But this is good to know about detailed stuffs and requirements before you get one.

I’ve never worked with PLC stuffs, but one thing I know is it’s a easy thing when you know basic of IO. For low-level coding, C is the lang you can relay on it. But you may not code your web in C! Even it’s possible using CGI, but one thing takes 1 hour with PHP, needs more than 4 hours with C/CGI. I think(not sure) linking and using a shared/static C lib in PHP is possible.

For now grab some more detailed info and have some study and suggestions from experts. It will help you make better decision.


#12

It will only broaden and expand your knowledge on databases, however the current course you are taking here is all about JavaScript so if you want to pursue relational database first you have to set a time frame for learning other server-side scripting languages like Python, Java, C++, C#, Javascript, and PHP, all of them can be use together with MongoDB… Watch this video so you’ll figure out which direction you want to go: https://www.youtube.com/watch?v=zXqs6X0lzKI


#13

I think you should look at this github page for guidance. It helped me greatly. You can briefly look for each topic and try to understand the basics of that architecture/concept/language/…

Good luck.


#14

For my labs we got the Visual Studio enterprise license from the university. Still doing my master there but I want to change the subject to informatics. Also looking for good online platforms (even if I have to pay for them).

I think I’ll watch the documentation of PhP and JS back-end (e.g. nodeJS vertx.io). And talk with our coder once… Maybe he can give me more suggestions :slightly_smiling_face:

Here I got some really good points, tips and hints that are helping me alot! But are there people, which know the whole application area I aim for and give me a tip on the back-end language PLCs/ IoT?

I’ll give this a shot. Thanks! :slightly_smiling_face:

I’ll looking it up later. Thank you! :slightly_smiling_face:

Amazing community and alot of help. Thanks alot to everyone!


#15

This could be helpful indeed. Generic talking as “There are some devices we need to connect and grab some data” won’t help too much for coding. If you are in luck, then there might be a HTTP API(micro-http service) that respond with a well known type like JSON, but you may not be that much happy and need some socketing and do bit-by-bit and byte-by-byte coding! Either ways are easy and possible indeed,

Be patient, things will be more clear for you soon.


#16

could this help? --> Language to learn next?


#17

If you’re interested in internet-connected devices and the Internet, JavaScript should be at the top of your list along with other web technology. Check out “Creating Web pages” here. You can also find some great software/web development resources here.


#18

You can still follow along with free code camp, but just swap out the Node / MongoDB for PHP / MySQL. That said, it’s worth learning a bit of Node to learn back end concepts. MongoDB for me is a bit of a dead end because it’s not much used in production, but it does give you good practice on async code, promises etc.