this post was submitted on 20 Apr 2024
7 points (66.7% liked)

Learn Programming

1625 readers
1 users here now

Posting Etiquette

  1. Ask the main part of your question in the title. This should be concise but informative.

  2. Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.

  3. Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.

  4. Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 2 years ago
MODERATORS
 

Does anyone else find javascript/electron-based code editors confusing? I can never understand the organization/hierarchies of menus, buttons, windows, tabs. All my time is spent hunting through the interface. My kingdom for a normal dialogue box!

I've tried and failed to use VSCodium on a bunch of occasions for this reason. And a couple other ones. It's like the UI got left in the InstaPot waaaay too long and now it's just a soggy stewy mess.

Today I finally thought I'd take the first step toward android development. Completing a very simple hello world tutorial is proving to be challenging just because the window I see doesn't precisely correspond to the screenshots. Trying to find the buttons/menus/tools is very slow as I am constantly getting lost. I only ever have this in applications with javascript-based UIs

Questions:

  1. Am I the only one who faces this challenge?

  2. Do I have to use Android Studio or it there some kind of native linux alternative?

edited to reflect correction that Android Studio is not electron

you are viewing a single comment's thread
view the rest of the comments
[–] orclev 14 points 8 months ago (1 children)

Android Studio is based on IntelliJ, it is not an electron based IDE.

[–] [email protected] -2 points 8 months ago (1 children)

aaah hmmm you do seem to be correct

what is it then? the javascript-based UI?

[–] [email protected] 5 points 8 months ago (1 children)

What IDEs have you used in the past?
Is it perhaps just modern (not necessarily better) layouts? Or tooling?
Software dev these days is a hell of a lot more complicated, however we are also standing on the shoulders of giants so it seems really easy as the complexity has been abstracted away.

[–] [email protected] 2 points 8 months ago (2 children)

So the following all drive me insane in exactly the same way:

  • Android Studio
  • VSCode/ium
  • Submlime
  • Brackets
  • Atom
  • various smaller projects that i uninstalled and can't remember the names of them

They can be somewhat ameliorated by

  • uninstalling/removing/hiding features that are not in use if possible (but risk having to spend 30 minutes looking for it if you ever need it)
  • finding a high contrast theme so at least you can mostly see where one visual area stops and the next one begins
  • Never opening more than a single document
  • don't use terminal, git or anything else. don't use any sidebars. remove status bars.

by way of contrast, these ones are either not confusing, or confusing in their own unique ways:

  • Kate
  • Notepad++
  • Geaney
  • jEdit
  • gedit
  • Mousepad
  • TextMate
  • BBEdit
  • Textadept

Only considering GUI-based editors.

[–] [email protected] 5 points 8 months ago (1 children)

I don't really have much experience with any of the ones you mention that you like. However, I'm guessing they are more of a text editor.

All the ones you dislike lean more towards IDEs (if not actually being an IDE) because of the features they have over more basic text editors (like the ones you like).
And it seems like the feature that you dislike are part of an IDE toolset, whereas text editors (like sublime) may or may not include these features.

Why do you want an IDE (or IDE tooling) if you don't want the extra features?
Could you just use a text editor and a separate compiler?

[–] [email protected] 1 points 8 months ago (1 children)

Could you just use a text editor and a separate compiler?

I don't know? Could I? Specifically asking for android because the tutorials I find tell me to use Android Studio. Is it doing something essential and different?

[–] [email protected] 1 points 8 months ago

I googled it, and found a few writeups for android without using an IDE. Some dated. Adding "24" to the search helps get recent articles.
Sounds like the UI can be done in XML, but would need to be previewed in Android Studio.
https://stackoverflow.com/questions/32643297/how-to-make-an-android-app-without-using-android-studio/76150499#76150499
Might be helpful? A more recent post on this kinda thing, but I only skimmed it. Then you can use whatever editor you want.

Another option is to drink the koolaid. Find an up-to-date tutorial that is for beginners, so it goes over the features of the IDE and why you should be using them.
I used to use Sublime for the majority of my stuff. But eventually tried drinking the VSCode koolaid for a new project, setting up language servers and all that. Wouldn't go back.
Some things only need a text editor. But if there are extensions for the language/platform/framework in VSCode, I'd rather have the tooling support.

[–] orclev 4 points 8 months ago (1 children)

Your issue seems to be less to do with electron or JS than it is to do with IDEs in general. Everything you said you dislike is an IDE, the ones you said are less confusing aren't IDEs they're text editors (some with extra macro buttons, but still not actual IDEs).

I'm confused what exactly you're having issues with in IDEs? Part of what separates an IDE from a simple text editor is that it provides much more information to help you understand and modify complicated code bases. Perhaps your issue is that you're simply not dealing with anything complicated enough to actually need the power of an IDE. Another possibility is that you don't really understand the languages or systems you're dealing with so you become confused about the extra info the IDE is providing you. Information overload, particularly as a beginner can be a very real problem as modern IDEs can be a little like drinking from a fire hose. They are by their nature information dense.

finding a high contrast theme so at least you can mostly see where one visual area stops and the next one begins

I don't intend this to be rude, but do you perhaps have some kind of visual impairment? Could adjusting your display to use a higher UI scaling help? Maybe bump up the default font sizes? Have you tested to see if you have some kind of colorblindness? Many IDEs will have themes or options to help with these cases.

[–] [email protected] 2 points 8 months ago (1 children)

Information overload, particularly as a beginner can be a very real problem as modern IDEs can be a little like drinking from a fire hose. They are by their nature information dense.

All of what you mention is possible. Which is why I'm wondering if I need android studio to learn? Or can I use something simpler for now? Tutorials I find seem to want you to use AS. Does it do anything special?

Sort of reminds me of 101 intro beginner linux tutorial that begins with instructing the user to open vi. Even though eventually it's good to know vi, nano is better to start with.

I don’t intend this to be rude, but do you perhaps have some kind of visual impairment? Could adjusting your display to use a higher UI scaling help? Maybe bump up the default font sizes? Have you tested to see if you have some kind of colorblindness?

I've done the ones where there is a circle of dots hat have a number in them and I can see all the numbers. Some of them are faint but I assume that's expected.

But OTOH in general I find a lot of modern dark color schemes difficult especially the "low contrast" ones difficult to use. My guess has been it's because I mostly have shitty old hardware and the schemes might be designed by people with fancy modern displays that fix it somehow. Or if you are using a tiling WM instead of stacking windows on top of one another, the fact that the titlebar of the active window melts into the content of the one behind it may be a non issue.

[–] orclev 3 points 8 months ago

All of what you mention is possible. Which is why I’m wondering if I need android studio to learn? Or can I use something simpler for now?

So, lets unpack what exactly you mean by learn in this context. There are multiple layers of skills necessary in order to program an Android app.

At the base layer, you've got conceptual skills like Object Oriented Programming (OOP). There are a variety of languages that are classified as OOP, Java/Kotlin happen to be among the more popular ones at the moment. But all OOP languages will have certain design principles in common and understanding those will allow you to not only structure your own code well, but also to understand why certain APIs are designed the way they are. You don't even need a computer to learn these skills, although having one to play around with will certainly help.

Next up from that you have the actual language. Kotlin and/or Java in the case of Android. Technically you don't need an IDE to learn the intricacies of these languages, although it will probably help mostly in regard to your interactions with the standard libraries. What an IDE will give you is the ability to quickly navigate to class, method, and property declarations, both in your own code and in libraries. It will also provide you with auto-completion of all of the above, so you can explore library APIs in a more organic way by taking an instance of some class and simply scrolling through what methods and properties it has available. That said, if you have a web browser open you can technically accomplish the same thing by just keeping the language reference open, so this is really more of just a time saver.

Finally there's the Android APIs. These are distinct from the standard library of Kotlin/Java and are going to be the most opaque portion of the learning process. Due to the size and complexity of these APIs, you really do want to be using an IDE here. You can write an Android app without one, but it's going to be much harder and far more error prone.

Tutorials I find seem to want you to use AS.

That's because Android Studio is the official IDE that google has endorsed for Android development, much like XCode is the IDE that Apple has endorsed (and developed) for iOS (and OS X) development. Unlike in the case of iOS/OS X you don't technically need to use Android Studio, it's entirely possible to cobble together your own set of scripts and tools to accomplish the same thing, but once again you're going to have a much smoother time if you use Android Studio. While the actual code can be written in almost anything, Android Studio is going to provide you tools to do things like UI design, easy access to launch your code in an emulator (or connected device), as well as a very easy to use debugger, plus the benefits I mentioned previously for exploring and understanding the Android APIs.

Does it do anything special?

Basically all the stuff I mentioned previously. The ability to very easily navigate to class and method declarations or instances of interfaces is invaluable when understanding and designing your apps, and being able to easily breakpoint and step through your code is absolutely critical for fixing bugs.

Overall I'd say take a layered approach. First make sure your OOP fundamentals are good, for that you can work with anything you happen to be comfortable with. Next learn Kotlin. Once again you can use anything you want for this, although it would be a good idea to at least use something like IntelliJ community edition or Android Studio. I recommend not writing an Android app for this, instead make something simple that just prints to the CLI like a hello world type app, although hopefully with a little more going on.

Only once you're comfortable with the above, then I'd explore making an Android app, and I would also recommend using Android Studio to do so. Once you've got a good understanding of OOP and Kotlin then a lot of what Android Studio provides will start to make sense.