can anyone recomend a alternative that is easy to install and also offers syntax highlighting? i have read about lazyvim and neovim, but both have extensive install requirments as i have read
If you really only care about syntax highlighting then nearly any code editor will do. Even nano supports it, it’s just disabled by default.
If you want something powerful yet easy to pick up, you might want to look at e.g. Zed (GUI IDE), Sublime Text (GUI editor), or Micro (TUI editor). If you don’t mind a learning curve, Vim/Neovim and Emacs are excellent choices. But there’s a lot of other options out there, like Gedit, Kate, BBEdit, Notepad++, etc. depending on your platform of choice.
I've been having a very good time with Zed. Great vim motion support, and fast to the point where using VSCode feels like driving a semi truck by comparison.
For TUI, Helix has a lovely out-of-the-box experience. What little config there is (two TOML files) is relatively easy to grasp. The main barrier you'll face is setting up your LSPs, which need to be installed manually. (Luckily, there's `uvx -q` for Python LSPs.)
For GUI, Zed is also really nice, has a great Vim mode, and auto-installs anything you might need. It loses a couple of points to VS Code on account of not being arbitrarily extensible, although that can also be seen as a plus, as it prevents extensions from randomly slowing everything down.
I’ve been using Zed [1] for some time now. They are also pretty AI focused so it may only be a matter of time, but so far I’ve been able to disable all of the AI interactions.
Kate is such a refreshing change. Super responsive and fast under Asahi. It's the best dev environment I've worked with in a very long time.
A few niggles with the switch, like it seems to assume Git but I'm using Fossil. I also haven't found a decent cheat-sheet for keyboard controls. I got duplicate block and move block working, and really enjoy the column editing, but still using cut for line delete.
I think KWrite is the same engine underneath? at least it feels much akin to Kate. I use it mainly for assembly files, since I was able to hack in an armv8 syntax file and needed a different theme than Kate.
VSCodium has been my go-to. VS Code was great for a bit but (even long before this) it was already suffering from the cancer that is "being a microsoft product" and it was being bloated to death like everything else they ship, but VSCodium seems to keep enough distance to be immune. Will it stay that way? Who's to say. I hope so though.
+1 on VSCodium. It was a 99.99% seamless transition, for me. The only annoyance at all was not having VSCodium added to my context menu, which doesn't even matter if you never "right-click->open folder" to launch. And, obviously, is pretty easy to add back in both windows and linux.
I often use a heavily forth inspired script language in my bigger c# projects. I have a hidden repl and can input scripts. I like how easy it is to produce results with such low vocabulary. Also there is no expression parsing
I always try to avoid auto in c++ or var in C#. On the paper it is a nice was to save you from typing out the type but this is only true if you have tool support and can use your mouse to obtain the type. In printouts or even in a text snippet I’m am lost. I think auto inC++ was the try to shorten some overburden type constructs and make it a little more friendly to use heavy templating. Please forgive my bad English. I’m no native speaker
Right, although I would argue the most interesting part of the type here is the container, not the containee.
With good naming it should be pretty obvious it's a Foo, and then either you know the type by heart, or will need to look up the definition anyway.
With standard containers, you can have the assumption that everyone knows the type, at least high level. So knowing whether it's a list, a vector, a stack, a map or a multimap, ... is pretty useful and avoid a lookup.
an interesting demarcation of subjective mental encapsulation ... associating the anonymous type of a buffer with the buffer's name ... as opposed to explicitly specifying the type of an anonymously named buffer
I came to like auto over the years, although I also use it sparingly.
Sometimes the concrete types only add visual noise and not much helpful information, e.g. iterators:
auto it = some_container.begin();
Not even once have I wished to know the actual type of the iterator.
I think IDEs are a moving target. Do you consider syntax highlighting to make something an IDE? Macro expansion? Autocomplete? intellisense-like based on full text search? based on a parser? based on the compiler? Is Kate an editor or an IDE? It has LSP support.
Having syntax highlighting makes me slightly faster, but I want to still be able to understand things, when looking at a diff or working over SSH and using cat.
I agree, but that means, that even complete integration of the compiler does not make an IDE. So the only distinguishing feature I can think of is startup time /s .
An IDE, by name, integrates the development environment. Depending on target, development lifecycle usually includes writing code, generating binaries, pushing those binaries to the target, executing on the target, and debugging on the target; so an IDE includes editing, compiling, linking, device/JTAG drivers, and debugging, in my mind. I suppose for platforms without cross-compilation the device drivers vanish, and for languages without compilers and linkers similar; but at a minimum, development means both authoring and debugging code, and so an IDE must provide an integrated view of the debugging process.
Then that distinction doesn't match the original claim, that readability of unlabeled code doesn't matter, since we now have IDEs, as this is an orthogonal matter according to your definition.
Very much true. On the other hand web based review interfaces seem to be stuck in the '60, when they could be so much better if they properly integrated with the compiler.
"bug" can refer to many categories of problems, including logic errors. I've certainly seen uninitialized variables be a source of bugs. Stackoverflow for example is full of discussions about debugging problems caused by uninitialized variables, and the word "bug" is very often used in those contexts.
I think what they mean, and what I also think is that the bug does not come from the existence of uninitialized variables. It comes from the USE of uninitialized variables. Making the variables initialized does not make the bug go away, at most it silences it. Making the program invalid instead (which is what UB fundamentally is) is way more helpful for making programs have less bugs. That the compiler still emits a program is a defect, although an unfixable one.
As to my knowledge C (and derivatives like C++) is the only common language where the question "Is this a program?" has false positives. It is certainly an interesting choice.
I mean that bug is *not in* uninitialized variable - bug in program logic. E.g. one of code pathes don't initialize variable.
So, I see uninitialized variables as a good way to find such logic errors. And, therefore, advice to always initialize variable - bad practice.
Of course if you already have a good value to initialize variable - do it. But if you have no - better leave it uninitialized.
Moreover - this will not cause safety issues in production builds because you can use `-ftrivial-auto-var-init` to initialize automatic variables to e.g. zeroes (`-fhardened` will do this too)
This is indeed exactly correct. Probably on its own this is the most important reason for most people to use it, as I think most of the millions of C++ developers in the world (and yes there are apparently millions) are not messing with compiler flags to get the checks that probably should be there by default anyway. The keyword auto gives you that.
It’s extremely convenient for certain things. For example, let’s say I’m referring to an enum constant field of a deeply-nested type. This can easily be expressed as “auto k = a.b.c.d.kind” instead of “Alpha::Bet::Charlie::Delta::Kinds k = a.b.c.d.kind”. It should be used sparingly in local contexts where the meaning cannot be confusing.
I doubt Qualcomm will be able to pressure there rules to the market. They do not own the cpu and making a arduino like board is very easy nowerdays. The have not even the power over the bootloader or the compiler. Library’s are either standard c/c++ or open source. People also do not like the arduino ide because the days of easy setup and run are gone and a real way of debug is needed in most projects. China board makers will never obey any rules and marketplaces like alibaba will still sell clones. Perhaps the ai at Qualcomm told them to buy arduino because it is in a suicide mission. Please excuse my bad English, no native speaker
> People also do not like the arduino ide because the days of easy setup and run are gone and a real way of debug is needed in most projects.
A surprising amount of embedded SoCs target the Arduino IDE either as the main IDE, or one of the main ones. And for those the setup is still pretty easy for non technical users - "Download IDE, paste this into the boardmanager, compile the sketch, upload". That's the main reason I'm still using the Arduino IDE for stuff I publish and expect less technical people to use.
The problem with the IDE is that it doesn't offer a gradual path to more advanced usage. You're pretty much stuck with a single file main project. You can split off functionality into libraries, but the way library resolving works is way worse compared to "proper" build systems. There are projects to provide makefiles for Arduino projects, but it's a bit of a pain to set up - I use that for CI on some of my stuff, but it clearly is on the other end of difficulty scale.
And of course the editor is horrible - but thanks to file watching and automatic reloads that isn't much of an issue nowadasy.
But targeting the Arduino IDE only means to have a GCC version to compile and some upload program and then set a bunch of variables in platform.txt . It doesn't actually make it any harder to not use the Arduino IDE.
> The problem with the IDE is that it doesn't offer a gradual path to more advanced usage. You're pretty much stuck with a single file main project. You can split off functionality into libraries, but the way library resolving works is way worse compared to "proper" build systems. There are projects to provide makefiles for Arduino projects, but it's a bit of a pain to set up - I use that for CI on some of my stuff, but it clearly is on the other end of difficulty scale.
It actually isn't all that hard. I recently did exactly that and it took like a week, most of which was spent on understanding what the Arduino IDE does with strace. Initially I assumed the Arduino IDE does way more stuff then it actually does. The makefile projects are too complicated, because they try to abstract over the installation and project. Instead I used Autotools which is way easier and simpler. It also breaks less, because these makefile projects tend to hardcode paths.
To save others the work: All you need to do is populate CPPFLAGS, CFLAGS, LDFLAGS, ... with the information from platform.txt and boards.txt . Then tell your build system to use the cross-compiler toolchain from your OS. Take care to only use the exact uploader program version that the Arduino IDE also uses, I have been burned by using the latest version, which bricked my board (i.e. you can't upload anything to fix it and need to use a second board to reflash the bootloader). This information is in the package_index.json file. Granted this is annoying to work with using fulltext search, you would have a much saner experience actually using the JSON format, but it still works and I am lazy.
> You're pretty much stuck with a single file main project.
You can have multiple files just fine, this is actually the reason why the Arduino IDE defaults to having this project directory. The Arduino IDE just assumes all files below that are things to compile. You need to remember to not name the other files with *.ino, but *.cpp, *.c and *.h, otherwise you end up with multiple main functions. An *.ino file is just a *.cpp file that gets preprocessed with a main function template.
> And of course the editor is horrible
You can tell the Arduino IDE to use another editor, which is what I did when I used it.
So basically, Arduino IDE acts as the client side of the tether to compile and flash firmware to the target device.
This seems like an ideal component for the OSS community to handle and rally around. Then anyone can use the IDE of their choice, the compile-flash manager handles the rest.
Prototyping platforms have tiny markets, but lead to downstream sales. Many a company were brought down by more developer-friendly platforms ignoring the "tiny" userbase of people who want to do unconventional things.
Most IC vendors provide free samples and support because of this. That's a market size of close to zero -- electronic engineers -- but leads to a market size of "massive." I can get an application engineer to visit my office for free to help me develop if I want.
Arguably, iPhone and Android won by supporting the tiny market of developers, who went on to build an ecosystem of applications, some long-tail, and some unexpected successes.
And arguably, x86 won for the same reason.
Atmel had shipped 500 million AVR flash microcontrollers, due in large part to the ecosystem created by Arduino.
Balmer said "Developers! developers! developers!" Visual Studio was not a major revenue driver for Microsoft; what was developed in it was.
> Prototyping platforms have tiny markets, but lead to downstream sales. Many a company were brought down by more developer-friendly platforms ignoring the "tiny" userbase of people who want to do unconventional things.
Qualcomm doesn't even make small/cheap MCUs so they aren't going to win over that market by buying Arduino. Their first board post-acquisition is a mashup of a Linux SBC with an MCU devkit, and while the Linux SOC is from QCOM, the MCU is from ST Micro.
>Atmel had shipped 500 million AVR flash microcontrollers, due in large part to the ecosystem created by Arduino.
How do you know the 500 million sales is due to the Arduino ecosystem?
I used to work in embedded for 10+ years and in the 4 companies I worked at so far, none of the products ever featured AVR microcontrollers. The microcontroller of choice for production was always based on the feature/cost ratio for each application, never on the "is it part of the Arduino ecosystem?" question.
Tinkering with Arduino at home, and building products for mass production, have widely different considerations.
If they sold 500 million microcontrollers and your workplaces never bought any, then your experience doesn't tell us anything about why the people that did buy them, bought them.
All of the products that i've been involved with that included AVR microcontrollers are from before the Arduino platform existed. The STMicro ARM M3 chips are more capable and cheaper then the 8-bit AVRs; The Arduino IDE never factored into the decision, even at the height of its popularity.
FWIW: I've used Arduinos, but never with their IDE.
AVR was super-developer-friendly well before the Arduino. It replaced the PIC for a lot of hobbyist projects.
To the points in the thread, on major product development, these things don't matter. On the long tail of smaller products, as well as on unexpected successes, they do.
That is the downside. you can prototype with one chip and when the concept works switch. I've worked with many projects over the years where that was done. Sometimes an intern proved it works with arduino - which wat cheap enough to buy without needing supply management, but then we did the project with 'good code' on our internal controllers. Othertimes we bought a competitor andiagain first thing switched them to our controllers. (Our controllers are designed for harsh environments which means millions of dollars spent designing the case and connectors)
I am diagnosed with dyslexia. I was learning to read before computer displays where a thing. I tried dyslexia fonts on my kindle and also on my computer. I have not found these font to be more readable. I have problems following the line of letters with and without the fonts. Perhaps there are different types of dyslexia all called the same but with different problems. Sorry for my English , I’m not a native speaker
I get good results if I first discus the matter with Claude and let it know my thinkings. This kind of warms the model up for my questions. Also I got if always the command to explain its thinking and check the inet for similar results
So normally I would say markdown does not need a special editor. It is ascii in its heart. I understand the wish to render the markdown as a rich text. I use obsidian and its editor also offers such a hybrid mode. After using it for 1 month I switched to the explicit text mode and only use the rich mode if I like to present something to other people. Perhaps such a way could also benefit your editor?
So you try to say c is for good programmers only and rust let also the idiots Programm? I think that’s the wrong way to argue for rust. Rust catches one kind of common problem but but does not magically make logic errors away.
reply