Confused & new to the development world.

Angry Dog

Member
Joined
Feb 24, 2021
Messages
47
Reaction score
21
Credits
816
Good day everyone,

I hope all of you are doing well and is safe. :)

Today I wish to write/post about Software development tools and ask why there isn't just a single standard.

To be clear software development is still new to me as i come from a very "old school" network background that still ran with Novel, winNT and and when Linux only had a text base interface witch i loved actually. The amber glow takes me back and is why i keep my 286 running but i digress.

If I may, i found that many developers use tools like Visual studio, Android studio and others like IntelliJ IDEA as well as Anaconda. I honestly hate Eclipse but i also use it if someone demands it. But i would rather avoid Eclipse.

The problem I have is, having to change from one software to the next. Now my focus is C#, Java, JavaScript, Python and Kotlin. Now to be fair IntelliJ IDEA as but one example can do a lot and i am very fond of it. But the classes i do and stuff demand i use what they use. It also help to see what they see on the screen to a degree it helps me to keep track.

But because i am still very new to this world, i thought i ask you the experts, real world programmers and developers what tools do you use. What would you recommend and why.

I feel when in doubt asking is the best way to truly understand all this. Also what language would do you see in the industry that i should focus on.

To give all of you an idea what my focus is, I wish to focus on android development using both Java and Kotlin But is also invested in HTML and CSS. I am no stranger to working hard, and I feel time is the greatest teacher alongside a positive attitude. Yes i am focused on a lot of languages because sadly the info i am getting reflected each choice i made. Now thankfully a lot of languages share a lot of similarities especially between Java and C# and to a degree Python. I am not heavily into HTML and CSS yet but i can only do so much at a time.

I was told that JavaScript should enjoy more focus then HTML. Would you consider this to be good advice?

I thank you all for taking time out of your day to read this and helping me out.

Again my main focus right now is Java, and C# along side Kotlin-Android. What recommendations do you have?

I am looking into freelance development as a serious option moving forward. So any advice i can get from all of you would be great and i truly value your time.

peace :)
 


wizardfromoz

Administrator
Staff member
Gold Supporter
Joined
Apr 30, 2017
Messages
6,633
Reaction score
5,398
Credits
19,688
@Angry Dog , while I have little to no knowledge in the areas you are covering, I am thinking that General is not the place to post this.

Take a look at our Dev-ops subforum and see if looks more fruitful, if so, I will move you there.

My good friend @JasKinasis may also have some thoughts on where is best for you.

Cheers

Chris Turner
wizardfromoz
 

LorenDB

Well-Known Member
Joined
May 12, 2020
Messages
358
Reaction score
289
Credits
2,460
If you are making open source Android app, you may find it worth your whole to learn C++, Qt, and QML. With QML as the interface and C++ with the Qt libraries for the driver code, you can create apps that look nice and run almost anywhere--even in the web browser through WebAssembly.

Honestly, I am not a huge fan of JS/HTML and I really like the Qt concept of "write once, compile anywhere". Possibly the only downside of Qt is that it is not free to use in a closed source app, although it is free for open source apps.
Today I wish to write/post about Software development tools and ask why there isn't just a single standard.
If I understand correctly, you are asking why everyone doesn't just use the same IDE/compiler/etc. The answer I would give is "different tools serve different purposes." Maybe you work most efficiently with IntelliJ, but some people probably prefer to work with Android Studio because they can work faster with it.
What would you recommend and why.
I'd recommend using what works best for you and the programming languages you're using.
 

captain-sensible

Well-Known Member
Joined
Jun 14, 2019
Messages
2,548
Reaction score
1,687
Credits
15,217
If you are making open source Android app

i've previously written an Android app , its still on Amazon - i wrote it completely in Python with kivy for gui and then converted to .apk using Buildozer

So you can add python to list
 

LorenDB

Well-Known Member
Joined
May 12, 2020
Messages
358
Reaction score
289
Credits
2,460
Actually, you might be able to make a Qt for Python app run on Android as well, although I've never tried it.
 
OP
Angry Dog

Angry Dog

Member
Joined
Feb 24, 2021
Messages
47
Reaction score
21
Credits
816
@Angry Dog , while I have little to no knowledge in the areas you are covering, I am thinking that General is not the place to post this.

Take a look at our Dev-ops subforum and see if looks more fruitful, if so, I will move you there.

My good friend @JasKinasis may also have some thoughts on where is best for you.

Cheers

Chris Turner
wizardfromoz

so sorry, again i thought that this question didn't belong in Dev-ops because i am a noob. i am really sorry.
 
OP
Angry Dog

Angry Dog

Member
Joined
Feb 24, 2021
Messages
47
Reaction score
21
Credits
816
Thank you for the reply, i will re-ask this question in Dev-ops as suggested
 

JasKinasis

Well-Known Member
Joined
Apr 25, 2017
Messages
1,321
Reaction score
1,870
Credits
8,343
My good friend @JasKinasis may also have some thoughts on where is best for you.

Disclaimer - I am a professional C/C++ programmer by trade, working on systems/desktop applications. I'm not a web developer.
At work, (where I have to use Windows), I primarily use Visual Studio for C/C++ (with a nifty vim plugin) and I also spend a lot of time in cygwin with vim, tmux, gcc, gdb etc..

At home, using Linux - I tend to do virtually everything in the terminal - regardless of the programming/scripting language.
I use Vim for editing source files and build/run/debug in the terminal. And if I want a more IDE-like environment, I usually use tmux to deal with multiple terminal sessions in a single window, or in tabs.

For a couple of complex GUI based Linux projects in the past - I have used things like QTCreator (for QT based GUI interfaces) and code::blocks (for wxWidgets based interfaces) with C/C++.
I have also done a little bit of QT stuff with python/pyQT too - but most of that was creating the interface in QT designer and then manually coding the application in vim. And also wxPython (python/wxWidgets) - which was done purely in vim.

I haven't done any C# since switching jobs 12 or 13 years or so ago - On Windows - C# was a visual studio thing. On Linux, I have played with Monodevelop - at the time - that used to be the only dedicated C# IDE for Linux. And it loaded and built most of my old Windows based projects without any need to modify anything. So it works pretty well. There may be a few other IDE's that now support C#, but in all honesty - I haven't looked for any, or used any of them. However, I'd imagine that VS-code should support C#.

Java - again, I've only ever done java-based stuff using vim/terminal (in Windows and in Linux). I've never needed to resort to using an IDE for Java. I always hated Eclipse. It was just far too slow and bloated to run smoothly on my aging/ancient Linux machines. IntelliJ is probably one of the better options. And of course there is Netbeans, which is much lighter than Eclipse. There are probably other capable IDE's for Java - but I've never used any of them.

For Android applications using Java/Kotlin - Android Studio/IntelliJ might be an idea?! I'd take AS/Intelij over Eclipse any day of the week!

Again - I've only ever worked on one Android application and that was back when I got my first Android phone. This was back when Android phones were first released and before the torch functionality was built into the OS. I was looking at the numerous torch applications that were in the app store and they were either charging stupid money, or free, but full of ads. Or just did stupid things that nobody would want, or need - like making the screen flash in different colours. So I decided to make my own torch application that would simply toggle the flash on or off.

To do that, I just downloaded/installed the Android SDK (and the NDK JIC) and then downloaded a "hello world" project template from a tutorial on the internet. I edited it in vim, to add the permissions and functionality I needed. And then built the package in the terminal using whatever build system it was using (apache ant?! Or it might have been gradle, IDK - it was a long time ago!!), before deploying the .apk on my phone. That worked for me for a few years, but as soon as the torch functionality was added to Android - I killed off my old project. And that's just about the extent of my Android development experience.

More recently - I have taken a look at Android Studio and it seems decent enough. But I don't currently own any Android devices, so I've uninstalled it. I probably won't be doing any further Android development for a while, ha ha!

For javascript - again, I've always used vim for writing HTML/CSS/javascript code. And in the rare event that I need to debug a script, I'll usually use the built-in dev-tools for whatever browsers I have installed (chrome dev-tools, firefox+firebug etc).

IDE-wise, I'm aware that the full (paid) version of Komodo IDE has a javascript debugger. The free, community version of Komodo is basically just a text editor, but AFAIK it integrates pretty well with firefox+firebug for javascript development.
IntelliJ only supports javascript in the non-free, paid Ultimate Edition.
JetBrains (creators of IntelliJ) also have an IDE called Webstorm (non-free/paid), which is a dedicated IDE for javascript. It features support for numerous \\javascript frameworks (angular, react, vue.js, node.js, electron etc etc)
And of course, there is Netbeans - Netbeans does HTML/CSS/Javascript pretty well. It's been a long time since I used netbeans - I can't remember a lot about it's capabilities, but I seem to recall that although being primarily a java IDE, it also worked for javascript.

Overall - IDE-wise, I think IntelliJ community version might be the best fit for most of @Angry Dog's purposes. It does Java and Kotlin out of the box. Python and several other languages are supported via plugins. But support for Javascript, PHP and a few others are only available in the paid, Ultimate Edition of IntelliJ.
For Javascript - perhaps netbeans (free), or Webstorm (non-free)?
And for C# - monodevelop, or VS-code will probably be the best options. I've never used VS-code and I feel a little dirty recommending it on Linux. But it is from Microsoft, who are the originators of the C# programming language, so it should be well supported.

Once again - as developers go, I'm more of a systems/desktop applications kinda guy.

I've learnt a lot of programming/scripting languages over the years. I've done a fair bit of heavy web-development in past jobs. But not since starting my current job 12/13 years or so ago. So my knowledge on the web side of things is almost certainly dated.

In the last couple of years, I've had a little play with a few javascript frameworks (node, electron etc) and I've played around with Kotlin and a few other Java/JRE based programming languages - including impractical/fun languages like ArnoldC - where all programs are created using quotes from Arnold Schwarzenegger films. And Chef, where programs are delicious recipes, ha ha!

Also, I'm a bit of an outlier - I tend to avoid IDE's wherever possible. In Linux I spend most of my time in the terminal, whether it be editing code in vim, or debugging in cgdb (enhanced version of gdb), or pdb (python debugger) etc.. Even on Windows - I spend a lot of time in cygwin. As such, I haven't used a huge number of IDE's. So my recommendations are based on what I know about existing IDE's, my limited personal experience with them and the results of a little bit of duckduckgo-fu.

Hope it helps!
 
OP
Angry Dog

Angry Dog

Member
Joined
Feb 24, 2021
Messages
47
Reaction score
21
Credits
816
Disclaimer - I am a professional C/C++ programmer by trade, working on systems/desktop applications. I'm not a web developer.
At work, (where I have to use Windows), I primarily use Visual Studio for C/C++ (with a nifty vim plugin) and I also spend a lot of time in cygwin with vim, tmux, gcc, gdb etc..

At home, using Linux - I tend to do virtually everything in the terminal - regardless of the programming/scripting language.
I use Vim for editing source files and build/run/debug in the terminal. And if I want a more IDE-like environment, I usually use tmux to deal with multiple terminal sessions in a single window, or in tabs.

For a couple of complex GUI based Linux projects in the past - I have used things like QTCreator (for QT based GUI interfaces) and code::blocks (for wxWidgets based interfaces) with C/C++.
I have also done a little bit of QT stuff with python/pyQT too - but most of that was creating the interface in QT designer and then manually coding the application in vim. And also wxPython (python/wxWidgets) - which was done purely in vim.

I haven't done any C# since switching jobs 12 or 13 years or so ago - On Windows - C# was a visual studio thing. On Linux, I have played with Monodevelop - at the time - that used to be the only dedicated C# IDE for Linux. And it loaded and built most of my old Windows based projects without any need to modify anything. So it works pretty well. There may be a few other IDE's that now support C#, but in all honesty - I haven't looked for any, or used any of them. However, I'd imagine that VS-code should support C#.

Java - again, I've only ever done java-based stuff using vim/terminal (in Windows and in Linux). I've never needed to resort to using an IDE for Java. I always hated Eclipse. It was just far too slow and bloated to run smoothly on my aging/ancient Linux machines. IntelliJ is probably one of the better options. And of course there is Netbeans, which is much lighter than Eclipse. There are probably other capable IDE's for Java - but I've never used any of them.

For Android applications using Java/Kotlin - Android Studio/IntelliJ might be an idea?! I'd take AS/Intelij over Eclipse any day of the week!

Again - I've only ever worked on one Android application and that was back when I got my first Android phone. This was back when Android phones were first released and before the torch functionality was built into the OS. I was looking at the numerous torch applications that were in the app store and they were either charging stupid money, or free, but full of ads. Or just did stupid things that nobody would want, or need - like making the screen flash in different colours. So I decided to make my own torch application that would simply toggle the flash on or off.

To do that, I just downloaded/installed the Android SDK (and the NDK JIC) and then downloaded a "hello world" project template from a tutorial on the internet. I edited it in vim, to add the permissions and functionality I needed. And then built the package in the terminal using whatever build system it was using (apache ant?! Or it might have been gradle, IDK - it was a long time ago!!), before deploying the .apk on my phone. That worked for me for a few years, but as soon as the torch functionality was added to Android - I killed off my old project. And that's just about the extent of my Android development experience.

More recently - I have taken a look at Android Studio and it seems decent enough. But I don't currently own any Android devices, so I've uninstalled it. I probably won't be doing any further Android development for a while, ha ha!

For javascript - again, I've always used vim for writing HTML/CSS/javascript code. And in the rare event that I need to debug a script, I'll usually use the built-in dev-tools for whatever browsers I have installed (chrome dev-tools, firefox+firebug etc).

IDE-wise, I'm aware that the full (paid) version of Komodo IDE has a javascript debugger. The free, community version of Komodo is basically just a text editor, but AFAIK it integrates pretty well with firefox+firebug for javascript development.
IntelliJ only supports javascript in the non-free, paid Ultimate Edition.
JetBrains (creators of IntelliJ) also have an IDE called Webstorm (non-free/paid), which is a dedicated IDE for javascript. It features support for numerous \\javascript frameworks (angular, react, vue.js, node.js, electron etc etc)
And of course, there is Netbeans - Netbeans does HTML/CSS/Javascript pretty well. It's been a long time since I used netbeans - I can't remember a lot about it's capabilities, but I seem to recall that although being primarily a java IDE, it also worked for javascript.

Overall - IDE-wise, I think IntelliJ community version might be the best fit for most of @Angry Dog's purposes. It does Java and Kotlin out of the box. Python and several other languages are supported via plugins. But support for Javascript, PHP and a few others are only available in the paid, Ultimate Edition of IntelliJ.
For Javascript - perhaps netbeans (free), or Webstorm (non-free)?
And for C# - monodevelop, or VS-code will probably be the best options. I've never used VS-code and I feel a little dirty recommending it on Linux. But it is from Microsoft, who are the originators of the C# programming language, so it should be well supported.

Once again - as developers go, I'm more of a systems/desktop applications kinda guy.

I've learnt a lot of programming/scripting languages over the years. I've done a fair bit of heavy web-development in past jobs. But not since starting my current job 12/13 years or so ago. So my knowledge on the web side of things is almost certainly dated.

In the last couple of years, I've had a little play with a few javascript frameworks (node, electron etc) and I've played around with Kotlin and a few other Java/JRE based programming languages - including impractical/fun languages like ArnoldC - where all programs are created using quotes from Arnold Schwarzenegger films. And Chef, where programs are delicious recipes, ha ha!

Also, I'm a bit of an outlier - I tend to avoid IDE's wherever possible. In Linux I spend most of my time in the terminal, whether it be editing code in vim, or debugging in cgdb (enhanced version of gdb), or pdb (python debugger) etc.. Even on Windows - I spend a lot of time in cygwin. As such, I haven't used a huge number of IDE's. So my recommendations are based on what I know about existing IDE's, my limited personal experience with them and the results of a little bit of duckduckgo-fu.

Hope it helps!

Needless to say i still have imposter syndrome especially after reading all this. Your company must be lucky to have you and i am humbled by your very clear answer. Yes IntelliJ community addition is a great tool but as you pointed out eventually we have to fork out the cash or find something else.

I am not going to lie to you, i am very new at this, i am not going to pretend i am very good because i basically just understand the basics. That said thank you for your reply.

But if i may ask, C/C++ vs C# should i rather go for C/C++ ? or is C# a good place to be?
 

JasKinasis

Well-Known Member
Joined
Apr 25, 2017
Messages
1,321
Reaction score
1,870
Credits
8,343
But if i may ask, C/C++ vs C# should i rather go for C/C++ ? or is C# a good place to be?
I don’t know the answer to that one! That’s really down to you.
I see C# as a bit of an oddity on Linux.

C# is a programming language that compiles to byte-code that runs in Microsoft’s .NET runtime. So it’s ultimately an interpreted language. And it was designed for windows.

On Linux, it compiles to a .exe which requires wine in order to run....

C# is used a lot on windows. Of the .NET based languages, it’s probably the best .NET language for creating windows applications.
The .NET extensions for C++ are a frankly a bit of an abortion! At work, we don’t use .NET at all. We just use C++ with windows native API’s (which are also horrible IMO, but preferable to using .NET).

If you plan to develop for windows only, then C# probably makes sense. It’s a high level language with a decent level of abstraction. So there are lots of convenient classes that you can use, to avoid a lot of manual coding.

For Linux, or for cross platform applications, personally I’d use C, or C++. But C and C++ are low/intermediate level languages and are a little more involved than C#. They take longer to learn, they are less abstract, there is less type-safety etc. So you have to code more robustly/defensively, to avoid introducing bugs/security holes.

Despite C# being available on Linux, I personally don’t see any point in using it. Why build an application that’s going to rely on wine to run?! That just seems unnecessary to me.

If you use C/C++, you can create cross-platform applications quite easily. It just means sticking to portable, standard c/c++ and using cross-platform, 3rd party libraries and a cross-platform build-system.
And any platform specific code can be isolated using conditional compilation via pre-processor macros.

So personally, I’d go with C/C++. Or perhaps even something like rust, which is another c++ like language, but which is more type safe and has a number of additional improvements.
 
OP
Angry Dog

Angry Dog

Member
Joined
Feb 24, 2021
Messages
47
Reaction score
21
Credits
816
@JasKinasis,

Hey, thank you for your reply and i hope i can bother you with a few more questions.

My background, i was trained as MCSE back in the day with NT4.0 and naturally i worked with many products since then as networks evolved but lately companies are moving over to the cloud so networking isn't nearly the mess what it was a long time ago.

What changed ?

Well companies for the most part went over to web services. A network became "just a internet connection" and everything is handled by the web host. This allow people to work from home, on the go and have a lot of advantages.

It doesn't matter what device or what OS is running as long as it can open the webpage it will work and really the transition was faster then i ever imagined it would be.

So now i need to make choices.

Here are the choices i made.

Java & android then Google hat brainwave now it is Kotlin & android. I was told C# is useful for both front end and back end. Then i made the mistake and looked for answers on YouTube.

In the end i am working on:

Java
Java Script,
CSS
HTML
C#
Android & Kotlin
Android & Java
Python
Linux scripts


Now if you know anything about networking you will know it is a lot of learning but the above is a lot i am not going to lie.

So to take the edge of things i went back and is finishing my Java training, along with Android & Java. I think i am going to drop Kotlin Then only when done will i look into C#.

Honestly i don't know every Youtube every article have something else and every job application wants a programmer demigod. So needless to say there is to much information that conflicts.

My goal is Android OS. i feel the platform is open and i believe Android OS will become the norm for desktop, laptop and mobile. I say this purely because of the support it has. I think it is worth doing it. Again i can be totally wrong but if you look at the growing market share it is hard to ignore android in general.

So again i may be totally wrong hence why i ask stupid questions.


Thank you for reading.
 
$100 Digital Ocean Credit
Get a free VM to test out Linux!


Top