Where should I start?

If you want to learn Python my college class has Head First Python as the textbook. So far Python is great. But I have yet to make a larger project with it.

1 Like

I will share my half centā€¦I never took any programming courses in school. Everything I learned, was by pure research and lots of failure. The first thing I learned was installing Slackware, and bash. I originally started to code NWN script (Neverwinter Nights). I actually found I really liked it, and wanted more. After that I went into developing iphone apps, and it has all lead me to developing a video game with UE4.
If I knew what I know now, back when I was youngerā€¦ I would have gotten into programming instead of electronic engineering. Now that I think about it, I actually started with basic, then went to pascalā€¦and took a long break. I do know this from my experience of trial and failureā€¦ all of programming is really very similar, when you can understand that similarity, you will be able to read code, like a second language. The trick isnā€™t what you start on firstā€¦ its just about starting. Lots of information online, it is where I learned, and just for the record I am not a very good programmer, I gotta think my way through what I want and then try to produce an outcome, from selective trinkets of knowledge I have found along the way. So go learn itā€¦ learn it all.

1 Like

I would have suggested Python as well, however the one detriment i see to it being ā€œusefulā€ in a cross platform scenario is that it isnā€™t native on Windows (and in most workplace scenarios - and realistically, most home user scenarios - thatā€™s what youā€™re going to be automating).

ā€œJust install it!ā€ i hear you say. Which is fine. If youā€™re dealing with a limited number of machines, but if youā€™re not, and youā€™re wanting to do stuff at scale you first need to deploy python at scale. As opposed to Powershell which is already there.

If this isnā€™t a concern (either you arenā€™t on windows, or donā€™t need/want to automate on windows at scale), go nuts. Itā€™s certainly a useful and easy to learn language.

Iā€™ll chime in here and agree that Python is a good choice, even though I donā€™t like it :wink: Itā€™s definitely easy to get started with and thereā€™s a metric ton of helpful tutorials online. Once youā€™ve mastered the basics Python is a very capable language and thereā€™s a huge selection of libraries to do almost anything you may need.

Languages like Java and C# require your source code to be compiled before it can be executed, and while a good editor or IDE can hide that complexity youā€™ll eventually run into situations that require understanding it. With Python you can focus on learning programming instead.

Personally I run Windows 10 Pro and professionally our company does a lot of windows 7 and windows 10 stuff. The idea of powershell and bash scripts is also an appealing thing. Would it be cumbersome to try learning both simultaneously? These both could help my productivity at work tremendously. I have done basic java programming class and a level 1 CS class where I learned to use C (not sure if its ++ or #) to make a pacman game from scratch. It took me months and I got lots of help but felt like I never really got much out of it.

Based off everyoneā€™s glowing recommendations Python will be what I learn first as it appears so useful. I eventually would love to work in some kind of Data Scientist or Machine learning if possible and I feel like with everything becoming so data focused for jobs/marketing and sales it will be an expanding market in the future. I know I donā€™t have the degrees but if I get good enough maybe I can get my feet in the door or go back to school for a masters in those fields.

I have done some Matlab and Mathematica work (Not really programming I know) but your points about visualizations and the multiple uses for Python are really hitting home with me. Iā€™d eventually love to make a Website for my side business and having the ability to makes tools/utilities for my personal use or to expedite things in workflow make all the difference.

What is glob and iglob? Can you elaborate more on these points? I use a remote login software currently to monitor PCā€™s for clients we service. The software has memory usage and programs etc built in. However, it would be nice if I could make a tool to automatically pull, compile, and display this data based off whatever metric I deem most important.

I am a slow/fast learner. I know that is a contradiction but things I intend to retain forever I learn very slowly and with lots of trial, error, and failures. When its off the cuff quick stuff like in a work environment people have told me I am one of the fastest learners they have ever seen. The problem is I retain in long term memory less successfully like that unless I repeat those things 1000s of times. I almost never watch learning videos at 1.25x speed so there shouldnā€™t be a worry :slight_smile:

I will check it out! Thank you!

Why is this the case?

What vector do these companies approach you from? I have minimized my Social media exposure tremendously due to wellā€¦ Level1Techs but also my own paranoids about my habits and preferences being farmed for someone elseā€™s wallet. I still have some things and I need to use different accounts/names probably but I donā€™t want to hurt my chances my not having instagram/facebook if thatā€™s how people are communicating job offers for these fields these days.

what is PHP? What can you do with C#, PHP and Java as far as industries go? I enjoy sys-admin work and never worked in devops not really sure what a workload for a devops person would even be like?

Ya my old CS instructor always told me that making good code is second to making understandable code. Especially since one coder canā€™t ever make the millions upon millions of lines of code necessary to run something like a game or industry leading program like Adobe. What is GIT?

What is PHP7? When you say object oriented can you elaborate more on the meaning of this?

Why is that?

So youā€™re essentially saying prioritize using it in the scenario that is the one Iā€™d like to work in someday or in the one that I want to be most familiar with?

Ya I am familiar slightly with Java from one class in school and remember having to run a compiler at the end and it throwing errors for me not ending the line of code correctly or etcc then having to troubleshoot why it didnā€™t take the line.

Iā€™m in agreement that python is a good place to start, especially for automation, if your purely looking to automate tasks on your OS then maybe BASH or Powershell but if your also wanting to be creative then those languages may not facilitate that as well as python or other task specific languages.

In terms of employment: Iā€™m not a dev (sysadmin) so keep that in my mind but when I observe the industry and the usage of python I donā€™t see many jobs where you just need python. Iā€™ve used python in my work, Iā€™ve worked in a hospital where medical research units are using python and then thereā€™s data analysis and AI. However in most cases they are using it on conjunction with other advanced job specific knowledge. I donā€™t see many jobs where you just need python and thatā€™s enough.

As it seems from your OP though that youā€™re only going to be using for personal things then I think it will serve you well in almost anything and give you a good framework to learn other languages should you wish in the future. Many suggestions have been made on the resources available, Iā€™d recommend picking something that is hands on and project based, but try and start your own projects as soon as youā€™re ready.

I started by learning C++ and it was tough. The up side is that back then I did eventually get my small project complete (A small keyboard macro CLI app). Anyway, starting with C++ is been thrown in the deepend, Mariana Trench kind of deep. You really need to understand how the hardware and OS work and getting the smallest things done require so much more code to achieve.

What are the machine learning and AI guys doing? Iā€™d like to hopefully transition into an expanding and limited market instead of twiddling my thumbs in my current industry. Or could I use Python for Data Analysis or even running metrics for a business?

What is CLI app?

C is just two steps away from hardware, one step away being Assembly. This means it has a lot of things that make sense hardware wise but are brain-wreckers software wise.
C++ just one step further from C means some quirks carried over.

Bjarne Stroustrup perfectly summed it up:

2 Likes

I recently was working at a small research unit in a university where they was using python in AI, they was using googleā€™s Tensorflow mainly, they had setup a camera to monitor cows and they had an automated cow milking machine (so I was told anyway). Basically the guyā€™s project was he was taking images of the cows and teaching the CNN (convolutional neural network) to detect behaviour in the cows. Such as aggression and if they was queuing (for the machine) etc.

If I remember and understood correctly the workflow was firstly they gathered weeks of footage and this was all split into images. Then they had to go through a label of the images in order to train the CNN. We are talking 10ā€™s of thousands of images of cows. They would then start training the CNN with the labelled images and started testing itā€™s accuracy. In order to increase this, they would start automating image manipulation. So using python image libraries to put filters over the images to then increase detection accuracy. In python a bounding box would be placed over the result from the CNN with a label and percentage.

Maybe if your interested in that you can get kits such as AWS Deeplens and Google AIY. Iā€™d probably go with the google version as Iā€™ve used Deeplens and itā€™s very locked in with their AWS services, so you have an extra layer over the real tech that I found made it more difficult to actually understand what is going happening under the surface (plus itā€™s overpriced if you ask me). Iā€™ve not used googles version but Iā€™ve heard that it is better for learning Tensorflow. On the other hand you can make your own from scratch without any kit, I think there are even preconfigured installations via docker to get basic image recognition working.
But just my 2 cent, I donā€™t work in AI so hopefully others have more experienced answers to the AI/ML question. As for Data analysis, Iā€™ve no idea, sorry!

Command line interface. I just mean that my C++ app had no GUI, it was just a small app with a config file and output to standard out (the terminal). So it was a really basic thing and it was a nightmare as a noobie. I think in the end it was something like 400 lines just to send keys based on keyboard input and pixel detection. When I started with python I made the same app. because I also moved from windows to linux and had no idea how to make the app again for linux. in python it was just over 100 lines to do the same thing.
Now that I mention though, the app in python is slower, as in from pressing a key it had a very small delay to get the result, but it didnā€™t really matter for me. That being due to python being high level and C++ low level, closer to the hardware. As they say, right tool for the right job and all that.

Learning both simultaneously may break your brain.

Bash scripting is very much sequential/functional and not object based - data is passed via the unix pipeline from command to command and this is text.

Powershell uses pipes for commands but passes OBJECTS. even as an experienced admin this is somewhat confusing sometimes if youā€™re used to piping text around with unix.

If youā€™ve done soem programming with Java then youā€™ll maybe find it less of a head fuck as java is object based, but something to keep in mind. The two different environments have different quirks.

If youā€™re mostly windows at work, iā€™d suggest powershell, if choosing between bash and powershell.

Either or both.

Right now, as i see it you have an itch to scratch, and youā€™re currently using platform X in environment Y.

To get the most benefit of what you learn right now, use something that fits ā€œright nowā€ and will give you some wins for what you do, asap.

Once youā€™re more confident with learning additional languages, then iā€™d focus on learning something for future career development.

Its easy to justify/spend time writing/learning scripting if it will impact your current job in a positive way :slight_smile: - and more frequent practice (by using it to help with daily tasks) will help you learn faster.

Thats the angle iā€™m coming from: whatever language is hot right now or whatever is less important than learning something that YOU can benefit from right now. Because the hot right now thing wonā€™t get exercised as much if you have no real world use for it.

Learning the new hot thing when you already know how to write useful stuff in something else will be easier.

I raised the installation issue of Python as i see that being a barrier to actually using it to do real stuff. If Python is in your environment, definitely, by all means - use it. If itā€™s not, running your code on anything will involve installing python firstā€¦ which may be more of a root-around than just doing the thing manually without using a script :smiley: e.g., you want to do X on 200 Windows machines with python. You either install python 200 times, or build a deployment package and install it first, or whateverā€¦

Iā€™m talking in the context of the workplace thereā€¦ if this is all home stuff then youā€™re in control of it all and ignore that bit aboveā€¦

edit:
lol at python skitā€¦ Hello world is ā€œprint ā€˜hello world!ā€™ā€

ā€œhello world!ā€ in powershell is literally:
ā€œHello world!ā€

Iā€™ve not really programmed at all in C++ but i have a bit in C.

Havenā€™t programmed in C since the early 00s though. I always found c++ confusing back then, and it just felt like it was C with a SHIT LOAD OF EXTRA BAGGAGE and complexity - without really being any further from the hardware in terms of safety - you still need to do your own memory management, etc.

Having worked with C enough to fall into most common pits, I found C++ to be way nicer to handle.

What still bugs me the most is the way for-loops need to be declared in C99 to not throw errors:

int i;
for(i = 0; i < ...){

From C++, this was introduced to C11:

for(int i = 0; i < ...){
1 Like

Effectively, you structure your code base in terms of ā€œobjectsā€. Like you could say you are making your own datatypes like that. You can make a ā€œPersonā€ datatype and give it properties like firstName and lastName. If youā€™ve ever seen the ā€œclassā€ keyword in basically just about any language. A class is like your building plan for an object. You can create multiple instance of it, that have independent firstNames and lastNames and you can also implement all kinds of functionality like somePersonICreated.SayYourName() would maybe print out itā€™s name. In many languages, like c# and Java just about EVERYTHING is an object. If you wanna read a file in c# you would for example create an instance of a StreamReader and keep on calling read or readLine until there is nothing to read left.

In most languages you have that, so learning what classes are, what inheritence is, what interfaces and abstract classes are, possibly what generics are (if your language supports it I have no idea if python does). Will be very important.

While languages like python and javascript arenā€™t necessarily always object oriented. They are more of those ā€œfunctionalā€ languages. They also have the ability to be object oriented. So does php. Itā€™s not forced upon you. But in most of those when you would program a website in python with django or php with laravel or javascript with angular. You would again be using a lot of object orientation. So you donā€™t really get around to not learn it.

Functional concepts have more to do with functions than with objects. C# and Java also have that with lamda expressions. For the most part though, I feel like itā€™s NOT very important to know what a functional language concept is. Object orientation you kinda have to learn as a concept to be able to use some things at all. While functional approaches I think you probably end up using without knowing you do.

  • php: is primarily used as a server side programming language for websites. Itā€™s also what wordpress and drupal are based on. Even though itā€™s mostly only used with the webstack. There are A LOT of web jobs out there so it makes it into one of the most used languages regardless of being used for mostly only one thing. You mostly see it in smaller companies and freelancing work. Some big companies use it, but for the most part those are more c# and java.
  • C#: Is used for all kinds of things. Most notably. Websites and backends for websites and itā€™s the goto language if you want to write a desktop application FOR WINDOWS ONLY. You can also program apps with xamarin (although Iā€™m personally not a big fan of Xamarin myself) it can be done. There is also the possibility of doing machine learning in c# with ml.net. I donā€™t think anybody learns c# specifically for machine learning. But you might end up doing it in c# anyways if you work for a (mostly) c# company like I actually do. .net core is very cool. It can now run on Linux too. You can write services for linux. And mostly everything you can do (except for the desktop application part) now works on linux.
  • Java is I guess the big boy, big firm language. For the most part you donā€™t see many smaller companies use it. Except for native android developing you do see it (although now thatā€™s where youā€™d start to see kotlin instead). Itā€™s used for similar things as c# minus the desktop part (for the most part) and plus the itā€™ s the official language for android. The initial setup process for some things in the Java world can sometimes be a bit heavy and complex. So that would be why smaller companies sometimes avoid it like the plague.
  • Javascript: No matter what you do in web developement you are going to need it for your front end. It is also often used for the entier webapp with various frameworks (angular, react and vue, mostly those three). It can also be used with electron to build cross platform desktop applications. And it can also be used with nodejs to build the backend of your application. And it can also be used with something like ionic to build cross platform web apps for android and ios. Either way if you do web developement in any of the above (or below) languages youā€™re at least using it for some front end code. Because it is the only language (apart from web assambly) that your browser can understand).
  • Python: Used a lot for automation and machine learning. Devops is mostly automation. You also asked about git somewhere. Git is a versioning system for collaborative coding. Once someone commits code to the git repository the job of devops would be to have the code be automatically tested and deployed to test-systems. Later deployed to production. Basically, their job is to speed up the time it takes from somebody wrote code, to the point the customer sees results that actually work as they are supposed to. In a way you can think of it as a 21st century sys admin with super powers. :slight_smile:
    Bigger companies have a dedicated devops person or team. While smaller companies donā€™t really have that luxury. That means you can be kinda the companies hero in a sence when you bring some devops knownledge on top of what you where actually hired for. Smaller companies benefit probably more from automation, but they just donā€™t have the work or budget to warrant employing someone full time to do just that.
1 Like

There are plenty of languages that are useful to learn. Once you have a good foundation in algorithms itā€™s easy to pick up additional languages. Usually the language you choose depends on the task you want to complete. They all have their pros and cons. Most languages fall into one of three categories compiled, interpreted, or other (could be compiled bytecode that is later interpreted or run in a JVM as with Java).

  • If you want something light and fast for embedded systems or operating system environments I would use a compiled language.

  • Interpreted languages and other are considered higher level languages. They are easier to learn but have some performance overhead.

  • PHP is used for back end web development to manage login sessions, SQL databases, and cookies.

  • JavaScript is generally used for the fancy interactive UI web elements and event systems.

  • Python is considered easy to learn and has a wide range of uses although the syntax is unfamiliar if you are used to Java or the C languages.

If you are new to programming my personal recommendation would be to start with Java or C# since they are easy to learn. This will make it easier to pick up C and C++ later since the syntax is similar. But it all comes down to what you want to achieve. Python is a good choice for automation.

Compiled Interpreted Other
C Ruby Python
C++ PHP Java
JavaScript C#
1 Like

This isnā€™t entirely accurate

chris@admindev-labs:~$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> "Hello, Linux!"
'Hello, Linux!'
>>>

Or just have a dev/jump box and run all your programs thereā€¦

I have a feeling you donā€™t really know what Python is :face_with_raised_eyebrow:


I think weā€™re getting into the weeds a bit. The recommendations are one thing, but ā€¦ discouraging someone from learning something because theyā€™d ā€œhave to install it 200 timesā€ seemsā€¦ Weird.

1 Like

Just a way to search for files/directories using Python.

I did something similar. My company way back had a ticketing system that would export a CSV with all of our ā€œticket statsā€ on it. The leadership team would spend hours creating graphs with the information. I told them I could probably automate that. And I did. I wrote a Python program that fetched the CSV, extracted the data, and used some styling and matplotlib to export it as an SVG. Opening it with Firefox would show all the ticketing data. Something that took management 4 to 8 hours a week took seconds now. Leaving them time to play on their phones, stand by the coffee maker, complain about other employees, and whatever else managers do :wink:

1 Like

Why do you want to learn to code? This will help me tailor my response.

Wait wat python is extremely compatible in any os what do you mean? At work we use python for big data, all the time with spark. An itā€™s all deployed in ec2 clusters. In fact itā€™s so easy to manage with artifactory, our pipelines are python, and we deploy horizontally scalable python all the time.

I hate to get almost political with languages but php is a dying breed in favor of modern frameworks like node and spring. I see no reason to go into that relatively dark rabbit hole. See the Stack Overflow stats. Itā€™s dying fast.