/tech/ - Technology

Technology & Computing

New Reply
Files 🖌️ Max 5 files32MB total
[New Reply]

[Hide] (65.5KB, 1022x1023)
 Discuss alternative OSes that are not Linux, Windows or Mac OSX. 
Also post your criticism of UNIX, Windows and Fag OSX design ITT.
If you want to discuss GNU/Linux distros, there is already a thread for it: >>>/tech/530
The package manager thread can be also useful: >>>/tech/4739

Some hastily written notes...
* everyone thinks UNIX (https://www.youtube.com/watch?v=tc4ROCJYbm0) is still the state-of-art. Ignorants praise Windows, not knowing it's originally a dumbed down clone of VMS that has some patches ported from OS/2 (https://www.itprotoday.com/compute-engines/windows-nt-and-vms-rest-story). Some say that Windows is also still mainly a single-user system that emulates a multi-user system. I think we are living Higurashi tier time loop when it comes to operating systems...
 (and CPUs: X86 is relic from the times of Vaxen. ARM, PowerPC/Power ISA, MIPS, RISC-V are more modern and better. Even modern X86 CPUs converts CISC to RISC in the microcode!)
* Plan9 (9front? Also, see plan9port and 9base), BeOS (Haiku) and TempleOS were the last innovative operating systems that I know of. Even the OSDev people imitate UNIX.
* It's awful that a misbehaving device driver can take down the whole system. Microkernels (e.g. MINIX, GNU Hurd, seL4) or muh """hybrid kernels""" (e.g. DragonFly BSD, Haiku, ReactOS I don't know if modern Windows has a hybrid kernel.) should be the norm. MINIX is incidentally perhaps the most used OS because ((( Intel ME ))) uses it as a basis for the CIAware that runs on our fucken CPUs!
* Nearly all criticism of UNIX is historic stuff: The UNIX-HATERS Handbook (https://web.mit.edu/~simsong/www/ugh.pdf a joke), Multicians (https://www.multicians.org/) and LispM (http://fare.tunes.org/LispM.html) users...
* Worse is better or do the right thing? https://www.dreamsongs.com/RiseOfWorseIsBetter.html & https://www.dreamsongs.com/WorseIsBetter.html
* Some modern UNIX-related innovations: 9p, DTrace, Solaris Zones & FreeBSD Jails, Nix & Guix...

User interfaces and GUIs
* #rC3 - What have we lost? https://invidious-us.kavin.rocks/watch?v=7RNbIEJvjUA&t=1m53s 
More vids...
< LispM (emulator): https://www.youtube.com/watch?v=o4-YnLpLgtk
< Smalltalk (also, see Squeak and Pharo): https://www.youtube.com/watch?v=uknEhXyZgsg&t=830s & https://www.youtube.com/watch?v=M_TXM0Jsglk & https://www.youtube.com/watch?v=JLPiMl8XUKU
< Lucid Energize: https://www.youtube.com/watch?v=pQQTScuApWk
< TempleOS: https://www.youtube.com/watch?v=puDG7XAGy2M & https://www.youtube.com/watch?v=1hCrl2wsz5c
Plan9's Acme is cool too: http://acme.cat-v.org/ & https://www.youtube.com/watch?v=dP1xVpMPn8M & https://www.youtube.com/watch?v=knDN0jMLiAg
GNU Emacs and SLY/SLIME can also be a source of inspiration: https://lispcookbook.github.io/cl-cookbook/debugging.html (also try Emacs' M-x customize)
Oberon Systems: https://web.archive.org/web/20191011164607/http://www.ethoberon.ethz.ch/

Links and instructions for running TempleOS using qemu can be found here: >>>/tech/934 & >>>/tech/4146

other stuff...=
Plan9 - Process Sleep and Wakeup on a Shared-memory Multiprocessor: http://doc.cat-v.org/plan_9/4th_edition/papers/sleep
Reposted from >>>/v/122313
Plan9 had some cool stuff http://9p.cat-v.org/ & http://man.cat-v.org/plan_9/1/intro
>the front fell off.

>criticism of UNIX
I also remembered the A fork() in the road paper: https://www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf (it's not like the windows' way is any better... see, CreateProcess() )
and this paste: https://gist.github.com/nicowilliams/a8a07b0fc75df05f684c23c18d7db234 ("fork() is evil; vfork() is goodness; afork() would be better; clone() is stupid")  P.S. vfork() sucks https://ewontfix.com/7/ Also, see rfork() of Plan9 and FreeBSD.
Also, like malloc(), fork() can fail: https://rachelbythebay.com/w/2014/08/19/fork/
Replies: >>4995 >>5551
[Hide] (1.5MB, 2560x1600)
I also have more detailed notes about various *BSD but they aren't ready yet,.,

Other operating systems
* TempleOS https://archive.org/download/TempleOS_ISO_Archive/TempleOSCDV4.13.ISO (not the latest version)
* Shrine https://github.com/minexew/Shrine
* ZenithOS https://github.com/ZenithOS/ZenithOS
* ZealOS https://github.com/Zeal-Operating-System/ZealOS
* ReactOS https://www.reactos.org
* ToaruOS https://github.com/klange/toaruos
* Haiku https://www.haiku-os.org
* GNU Hurd https://www.gnu.org/software/hurd/
* Debian GNU/Hurd https://www.debian.org/ports/hurd/
* illumos https://illumos.org
* OpenIndiana https://www.openindiana.org
* AROS http://www.aros.org
* MenuetOS http://menuetos.net/index.htm
* KolibriOS http://www.kolibrios.org/en/
* Genocide Genode https://genode.org
* MorphOS https://www.morphos-team.net
* Mezzano https://github.com/froggey/Mezzano
* Visopsys https://visopsys.org
* PureDarwin http://www.puredarwin.org
* HelenOS https://github.com/HelenOS/helenos
* Redox OS https://www.redox-os.org
* FreeNOS https://github.com/nieklinnenbank/FreeNOS
* FreeDOS https://www.freedos.org (FreeDOS programming tutorials: https://www.youtube.com/watch?v=MpKoh-AabTM&list=PLzuACU-W7Omo3VEnMKuM0IPupdOHFDzL3&index=1)
* MINIX https://www.minix3.org (very outdated programs. it isn't suitable for desktop use, except for x86 ring -3 rootkits)
* Xv6 https://github.com/mit-pdos/xv6-public and https://pdos.csail.mit.edu/6.828/2020/xv6.html ("a simple Unix-like teaching operating system")
* helloSystem https://hellosystem.github.io/docs/ (A fork of FreeBSD that looks like Mac OSX)
* NetBSD https://netbsd.org/
* OpenBSD https://www.openbsd.org/
* DragonFly BSD https://www.dragonflybsd.org/

Avoid these
- FreeBSD (it sucks a CoC)
- 9front http://9front.org (it sucks a CoC, too. It has BLM banner on front page.)
- Plan 9 from Bell Labs https://9p.io/plan9/ (historic)
- ANTS ~ Advanced Namespace Tools for Plan 9 http://ants.9gridchan.org (it's dead because the maintainer cucked out)
- TrueOS (it's unstable and dead.)
- Microsoft Windows (it's a botnet)
- Fag OSX (unless you are FreeBSD developer) :^) 
- Fuchsia https://fuchsia.dev (Goolag)

Misc. stuff
* seL4 https://github.com/seL4/seL4
* EwoK https://github.com/wookey-project/ewok-kernel
* FreeRTOS https://www.freertos.org/index.html
* ChibiOS http://www.chibios.org
* The little book about OS development https://littleosbook.github.io
* Symbolics Lisp Machine (emulator) demo https://invidio.us/watch?v=o4-YnLpLgtk
* Multics stuff: https://multicians.org
* OSDev wiki https://wiki.osdev.org/Main_Page
* Programming from the Ground Up https://savannah.nongnu.org/projects/pgubook
* Nand to Tetris https://www.nand2tetris.org/
* Operating Systems: Three Easy Pieces https://pages.cs.wisc.edu/%7Eremzi/OSTEP/
* Operating Systems by William Stallings
* Modern Operating Systems by Andrew S. Tanenbaum
* The Design and Implementation of the FreeBSD Operating System by Marshall Kirk McKusick, George V. Neville-Neil and Robert N.M. Watson
* (Historic) Lions' Commentary on UNIX 6th Edition, with Source Code by John Lions
* (Historic) The Design and Implementation of the 4.4BSD Operating System
* More OpenBSD and BSD books: https://www.openbsd.org/books.html
* FreeBSD books: https://www.freebsd.org/docs/books/ & https://vermaden.wordpress.com/2022/02/04/books-about-freebsd/
* OpenBSD Presentations and Papers: https://www.openbsd.org/events.html
* FreeBSD Presentations and Papers: https://papers.freebsd.org/
* NetBSD Presentations: https://www.netbsd.org/gallery/presentations/
[Hide] (66.7KB, 800x600)
Allegedly this runs good (except the wifi) on DS Lite, which has only 4 MB RAM.  DSLinux doens't, unless you have the Opera browser cart with its 16 MB RAM expansion.
It is important to note that most bsds are pozzed, there is a dragonbsd covid manpage, net/freebsd are the original tranny sjw vector. openbsd is the probably the only neutral one.
Replies: >>4973 >>4997
Haiku has a POSIX-y C programming interface, a (very incomplete) BSD compatibility library, and it uses copypasted code from some Linux C library, I forgot which, probably glibc.

I've ported programs to it, it's not hard. It's not incorrect to look at it as another unixy system from a programming standpoint.

One of the people behind the homebrew toolchains made an OS for the Nintendo DS: https://feos.mtheall.com/
They're all trannied at the very minimum, for instance @solene at OpenBSD is a tranny.
And to finish this triple post, FreeBSD isn't a hacker project, it's a corporation. It has a career CEO on top and a board of directors.

As anyone in tech who has interacted with tech corporations knows, there's not a single one that isn't a cancer that must be destroyed, so that puts FreeBSD on the same level of cancer as Ubuntu or Mac OS.
Replies: >>5414
[Hide] (2.2MB, 2614x3300)
The thing is corporations control nearly everything, especially standards committees.  So short of doing hobbyist projects like TempleOS or CollapseOS where you write everything from scratch including the entire toolchain, then you're gonna be stuck with their influence.
Replies: >>4976 >>4981 >>5712
corporations aren't necessary evil, the lack of competition caused by jews is
Replies: >>4978 >>4981
They kinda are evil by their own nature of putting profits above all else.  Also they can basically live forever and hoard "IP" well past a human lifespan, which totally defeats the original purpose of copyright.
Replies: >>4979 >>5414
Everyone put their profits above all else, by that standard everyone is evil. Corporations aren't even real, they live forever because it's just a name. "IP" is a government design, not corporation.
The focus on corporations or the "system" is a misdirection from the reality that power is always held by men. This misdirection is spread though all corporate medias. "Evil corps", wrong, evil men control those corps. Any entity can be evil if controlled by evil individuals.
Ted thinks computers are evil, he is wrong, people who control it are evil.
Replies: >>4980
The point is corporations allow men to do evil things without any real consequences.  They can hide behind it, allow it to absorb all the flak and liability, then they get off scott free with their golden parachute, only to do the same thing again and again.
Replies: >>4987
You could also boot into a Lisp and use it as a basic OS: https://picolisp.com/wiki/?PilOS
More about PicoLisp: https://github.com/tj64/picolisp-by-example & https://github.com/tj64/picolisp-works & https://git.envs.net/mpech/tankf33der
uLisp could also work: http://www.ulisp.com/

< small OS that designed to be used after a collapse (of supply lines). http://collapseos.org/why.html
< first version written in Z80 asm. Also, see http://www.z80.info
< the current version is written in Forth. Also, see https://www.forth.com/starting-forth/ & http://thinking-forth.sourceforge.net/ (also found a little review: http://verisimilitudes.net/2019-06-15 (also check out his Meta-Machine Code stuff)

In my opinion, most software should be FOSS: https://www.gnu.org/philosophy/free-software-even-more-important.html and follow the Seven Laws of Sane Personal Computing: http://www.loper-os.org/?p=284
Replies: >>4987 >>4998 >>5712
Yes, those people are protected by the law. But those people's friends or themselves made them. Therefore the only solution is minecraft-based.
Agreed. It is similar to water and electricity. If there were enough competition for software freedom and companies (i.e. users are not retarded and take anything microshit up their asses), companies would races to libre software and innovations. Then most software would be FOSS, like cheap water supply. Even in the old days, unix came with all their sources. It doesn't even have to be FOSS, just every user have the source and the permission to change it is much better than what we have now.
>>4968 (OP) 
Contiki OS.
[Hide] (95KB, 960x740)
Replies: >>4999
Looks kinda dead, but still, it's cool that it exists and maybe belongs here.
Replies: >>5000
[Hide] (719.1KB, 850x996)
>Literal propaganda as manpages.
Mezzano is active, it just suffers from the usual hobby OS problem: Hardware is a tower of Babel so lmao0drivers.
Replies: >>5001
A compatibility layer to use Linux drivers is the only possible solution if the custom os is designed for general bare metal installs.
Replies: >>5004 >>5004 >>5408
[Hide] (31.6KB, 500x500)
>That's government.
Your interactions with corporations is voluntary. You can choose which competing corp, if any, to buy stuff from. But there is only one government and you have to give them your money (taxes) or you go to jail. So the potential for "evil" and corruption is much higher in government.

>A compatibility layer to use Linux drivers is the only possible solution if the custom os is designed for general bare metal installs.
NetBSD had a project called rump kernels to run NetBSD drivers in userspace and theoretically make them reusable for other operating systems. I don't know how far along they got though.
/b/ exists
trashchan/finance/ exists
+ The default installation is secure. OpenBSD has many interesting security features, for example, pledge(2) and unveil(2) 
+ The developers are committed to developing their OS
+ OpenBSD's sister projects like mandoc, OpenSSH and LibreSSl are cool
+ sndio sound server
+ pf firewall
+ Well-written man-pages and FAQs. Also, see afterboot(8)
+ Theo de Raadt is based
+ OpenBSD doesn't have Bluetooth support anymore
+/- Its developers and users expect you to at least try to fix the problem yourself before they will help you. You get replies quickly on the mailing-lists. #openbsd IRC channel is active, too.
+/- OpenBSD uses cvs and patches for development (there is now a read-only git mirror)

notes and resources
* https://www.openbsd.org/
* OpenBSD Journal: https://undeadly.org
* OpenBSD zine: https://webzine.puffy.cafe/
* Unofficial OpenBSD quick start: https://www.openbsdjumpstart.org
* ...Another: https://www.c0ffee.net/blog/openbsd-on-a-laptop
* Default package management: OpenBSD's ports and pkg_* tools.
* The OpenBSD FAQ (the installation guide): https://www.openbsd.org/faq/index.html
* tl;dr you can use pkg_info -Q foobar to find a package and pkg_add foobar to install it. Use pkg_add -u to upgrade the installed packages. 
* If you want, you can install the standard GNU tools: pkg_add coreutils
* If you wish to run X11 (xenocara) you may want to also enable automatic starting of OpenBSD's DM (xenodm) during the installation.
* You should install all file sets during the installation if you are unsure.
* If you have (created) a (MBR or GPT) partition with OpenBSD's partition type (A6) then OpenBSD's installer will recognize it and ask whether you want to install to that partition.
* OpenBSD gaming resource: https://mrsatterly.com/openbsd_games.html
* A quick rundown of OpenBSD's security features: https://www.openbsd.org/security.html and https://en.wikipedia.org/wiki/OpenBSD_security_features
* You can install non-free firmware using the fw_update(1) tool. Its man-page is self-explanatory.
* You can install patches with syspatch(8). Its man-page is self-explanatory.
* You can upgrade to the next release by using the sysupgrade(8) utility. Also check out sysmerge(8).
* The binary packages are also getting updates on the latest "stable" release.
* If you want to install pkgsrc on OpenBSD, install pkgsrc into your home directory (use ./bootstrap --unprivileged) Or define a different prefix for pkgsrc (or at least make backups of the original pkg_add, pkg_delete, pkg_info and pkg_check binaries)
* I got pkgsrc working on OpenBSD 6.3 by running the following command: ./bootstrap --compiler clang --unprivileged --prefer-pkgsrc=openssl
* When you are creating disk partitions, you can specify a partition's size in (for example) gigabytes, by appending G to the desired size (for example, 42G means 42 gigabytes). also read: disklabel(8) fdisk(8) newfs(8)
* sysctl hw.disknames is handy
* You can browse OpenBSD's ports here: http://ports.su or https://openports.se
* OpenBSD has a good support for ThinkPads.
* OpenBSD uses doas instead of sudo. doas is very nice, but it needs to be configured first. it's easy as pie, see man 5 doas.conf
* AMDGPU was added to the kernel in release 6.6
* There is a 3rd-party utility called openup that can be used to upgrade both ports and the base system. You can read more about it here: https://www.mtier.org/solutions/apps/openup/

To update ports:
First fetch/update the ports tree (either by using cvs or by fetching a snapshot) Read https://www.openbsd.org/faq/ports/ports.html and https://man.openbsd.org/ports
possible language: bash, relevance: 28
# if you don't want to run cvs as root
user mod -G wsrc lain
user mod -G staff lain
# You could also increase the resource limits in /etc/login.conf and sysctl kern.maxfiles

# get the initial ports tree
cd /tmp
ftp https://cdn.openbsd.org/pub/OpenBSD/$(uname -r)/{ports.tar.gz,SHA256.sig}
signify -Cp /etc/signify/openbsd-$(uname -r | cut -c 1,3)-base.pub -x SHA256.sig ports.tar.gz
cd /usr
tar xzf /tmp/ports.tar.gz

# pick a mirror from https://www.openbsd.org/anoncvs.html (bottom of the page)
cvs -qd [email protected]:/cvs checkout -rOPENBSD_7_1 -P ports

# to update the ports from now on:
# cvs -q up -P ports -d -rOPENBSD_7_1

cd /usr/ports
cd lang/chicken
make install
make clean

+ It supports many CPU architectures: "Of course it runs NetBSD!"
+ lua-scriptable kernel (I think this is great for prototyping. You can find some presentations/PDFs here: https://www.netbsd.org/gallery/presentations/)
+ rump kernels, see https://wiki.netbsd.org/rumpkernel/
+ NetBSD has audio mixer built into the kernel
+ NPF firewall
+ dtrace
+ ZFS support (N.B. As of NetBSD 9.1, booting from ZFS or using ZFS for root is not supported yet...)
+ afterboot(8) man-page
+/- The system is traditional...
+/- ...but NetBSD also has some experimental features, however

notes and resources
* https://netbsd.org
* Default package management: pkg_* tools and pkgsrc
* The NetBSD Guide: https://netbsd.org/docs/guide/en/index.html
* Remember to use the installer's configuration menu to install the package manager and enable installation of binary packages
* What NetBSD is referring to as a "port" is actually an "(CPU) architecture".
* In addition to the cvs repo, NetBSD also provides official Mercurial (hg) mirror (which is read-only?)
Replies: >>5389
[Hide] (141.2KB, 900x1349)
DragonFly BSD
+ Has the best multi-core/multi-thread performance. (at least on *BSD)
+ Has the best file system (HAMMER and HAMMER2) ZFS is overengineered and BTRFS is not only overengineered but also, in the past (?), it wasn't as stable as one would hope.
+ jails
+ vkernels
+ Matthew Dillon is based
+/- Uses git for development (instead of cvs)
? Dragonfly BSD has smaller community than OpenBSD and NetBSD
+/? Perhaps Ravenports will one day be the default.

notes and resources
* https://www.dragonflybsd.org
* DragonFly Digest: https://www.dragonflydigest.com
* Default package management: pkg (for binary packages) and dports (https://www.dragonflybsd.org/docs/howtos/HowToDPorts/) Has a lot of packages (Dports = FreeBSD ports + DragonFly BSD specific patches)
* Dragonfly BSD Handbook: https://www.dragonflybsd.org/docs/handbook/
* Press SCROLL LOCK to enable/disable scrolling the console with arrow keys
* If you want to install pkgsrc, you should do an unprivileged installation under your own home direcory; see the relevant parts under OpenBSD's and pkgsrc's sections.

(contributed by Anon)
+ Website, repos and packages available over hidden services.
+ grsecurity for FreeBSD
+ LibreSSL
+ Port building systems (ports-mgmt/poudriere and ports-mgmt/synth)
+ Has the fastest package manager available on BSDs (pkgng)
+ jails
+ Can run wine and use linux filesystems
+ Has the best UFS2 implementation (idk why)
+ OSS4
+ Hardware support on par with FreeBSD
- amd64 only
- Ports aren't as patched as the OBSD ones

(FYI, there is also Ravenports: http://www.ravenports.com/ & https://github.com/jrmarino/Ravenports/wiki/Ravenusers_Guide)
Many other operating systems support pkgsrc.

The TL;DR version of getting pkgsrc working on operating systems other than NetBSD is:
Download the stable branch tarball from https://www.pkgsrc.org/
Unpack it.
possible language: bash, relevance: 13
cd pkgsrc/bootstrap
./bootstrap [--unprivileged]
# Prefer installing pkgsrc under your $HOME, unless you want to install daemons.

# After running the bootstrap script, cd ..
# To install something:
# bmake is the NetBSD make.
cd lang/racket
bmake readme
bmake install

General tips and resources
* pkgsrc guide: https://www.netbsd.org/docs/pkgsrc/
* An introduction to pkgsrc (pls note that DragonFly BSD doesn't use pkgsrc as its default package manager anymore): https://invidio.us/watch?v=t6vlmJ84BSI&t=4m35s
* A beginner's guide to PF: http://srobb.net/pf.html
* Before installation, use something like gparted to resize an existing partition and/or create a new partition for your *BSD installation.
* BSD utilities can behave differently (and have different command-line switches) than the utilities provided by GNU.
* You probably want to use the korn shell (ksh)
* Remember to check info-pages in addition to man-pages. The info-pages of GNU programs are usually more comprehensive than their man-pages counterparts.
* What *BSD is referring to as "slice" is what most other operating systems refer to as "partition". In *BSD, slices contains smaller parts, called "partitions".
* If you don't know which software sets to install, choose all of them.
* Don't assume that *BSD has GNU programs installed by default or that *BSD utilities work the same way as their GNU counterparts

GRUB MBR/UEFI Multi-booting example for OpenBSD/NetBSD
* If you need to reinstall the bootloader (aka "bootblocks"), you can spawn a shell using the install medium and mount the OpenBSD disk on /mnt and chroot /mnt and then just use installboot(8)
* after installing the bootblocks (in UEFI ESP partition), reboot into GNU/Linux.
* check that you have the OpenBSD's *.efi files in your EFI System Partition (the dir that OpenBSD's installboot created is named "boot" by default. you could rename it as "OpenBSD")
* copy /etc/grub.d/custom_40 as /etc/grub.d/custom_42
* create following file in /etc/grub.d/custom_42 (and then generate a new grub.cfg like usual)
* It's recommended to take a look at GRUB2's manual and the man-pages for fdisk(8) and boot(8) (N.B. the fdisk is a bit different to what you might be used to!)
possible language: bash, relevance: 23
menuentry "OpenBSD" {
    insmod part_bsd
    insmod part_gpt
    insmod part_msdos
    insmod chain
    # UEFI
    set root='hd0,gpt1' #This should be EFI ESP partition for UEFI systems
    chainloader (${root})/EFI/OpenBSD/bootia64.efi
    # instead, write these 2 lines for BIOS MBR systems
    set root='hd0,msdos3'   # this is OpenBSD's MBR partition.
    chainloader +1          # this works for NetBSD, too
    # N.B. chainloading is the recommended method. For a good reason!
    # Wanna use GRUB without chainloading?
    # instead of chainloading, you can also try something like this:
    #kopenbsd (${root})/bsd
    # just FYI, to boot NetBSD, you can also
    #knetbsd /netbsd
Replies: >>5409
This reduces to reimplementing most of Linux. The Linux driver stack is outright gnarly and a lot of Linux drivers are outrageously shit. It also means you can't stray too far from a Unix design.
>+ Matthew Dillon is based
>Xlibe - An Xlib compatibility layer implemented on top of the Haiku API, in order to run X11 applications on Haiku without an X server.
Replies: >>5424
Anything above a hobbyOS is going to be a corporation of some form. The main difference being an OS with a non-profit corporate entity to handle accounting/legal issues vs something like Redhat or Moziila who are definitively in the "big tech" sphere. There are also a few OS that are essentially small business with a BDFL, and they tend to be good, as long as the lead is a sane person.

>profits above all else
<profits are quantified in money
<who controls the money?
<aiming the magic money machine at it, will inevitably lead to controlling it.
I'm more interested in knowing if Haiku's GUI architecture doesn't suck as much as all the others. But I'm not willing to touch C++ nor interested in GUIs enough to look it up.
Replies: >>5426
>not willing to touch C++
Planning a new project, what do you have against C++?
Replies: >>5428 >>5435 >>5437
Piles upon piles of useless abstractions and every single language feature the designers could think of with no rhyme or reason.
A good programming language is a language that tries to maximize expressive power from the least primitives possible and achieves the best performance possible while doing so. C++ fails terribly at it.
Replies: >>5430
>maximize expressive power from the least primitives possible
What do you mean by this? Does it mean a keyword does a lot?
Replies: >>5434
It means how much you can express with how few language features.

In LISP for instance, you can declare a function that allocates storage and returns a function that uses this storage, the storage doesn't have a name outside the returned function. The only primitive it uses for that is function declaration, which happens to be used to implement variable declarations.

In C, it's impossible, you need to declare a function and make the buffer a parameter, then you need to pass the right buffer every call. You could use a static variable inside the function but that's not thread safe and the storage would be allocated during the program's whole life, and you could use thread local storage, but it would cap the amount of distinct uses of the function within a thread to 1 in addition to still occupying memory when the function isn't in use. You need a function declaration, a variable declaration, and probably to allocate some memory, then you need to pass the storage in every call.

The LISP languages have the best expressive power in general. C is middling. Of course, C is also several times faster than LISP, so you have a tradeoff here, but both are in pretty good places.

Additionally, libraries don't really count for expressive power, you can have a library in any language. Expressive power is about how varied, good, and easy to use the semantics a language provides are. You can increase expressive power by adding more features to the language, but that's not free, that's why part of good language design is maximizing expressive power while having the least features. Just like you can make a car engine more powerful by making it bigger, but progress in engine design (at least as far as power goes) is to make an engine of the same size with more horsepower.

I don't know why, but the people behind modern languages (and modern includes C++ given how much it changes over the years) seem to not think about this at all and simply tack all the features on, make a huge standard library and call it a day. At least the people behind C worked hard on providing conveniences that can be implemented very efficiently in machine code, and the LISP people worked hard on expressive power, they actually tried to design good languages with different goals. And then you have Python: Python is not more expressive than LISP, achieves this lesser expressive power by having many more times more features, and it's also extremely inefficient in general, so one really has to wonder why use it over something else.
Replies: >>5441
>what do you have against C++?
It's easier to pretend a language is bad than to admit you are too dumb/lazy to learn it properly. That's why he doesn't want you to use it either, everyone who successfully uses C++ is living proof of his incompetence.
Replies: >>5438
C++ is too complex.
There are the old bad ways of doing X and the newer good ways. This includes simple thing like initializing a variable. The biggest benefit of C++ over C are that C stdlib is too small and doing anything with C strings is painful.
Computers were made for doing the work for you, not vice versa. If you're memorizing 1300 pages of useless trivia in the vein of "X has these corner cases as a workaround for Y which was designed 10 years ago as a workaround for Z which was designed 20 years ago and turned out to be a mistake but seemed cool at the time", you are missing the point, hard. You aren't more hardcore for wasting your time.
Replies: >>5441 >>5460
I disagree, programmers should understand the reality of what they are programming. Languages should model the processor closely. You can say memorizing shit to fix edge cases is fixing old problems, but those problems exists in the processor that is running your code right now. It is not different from a wood carver knowing the properties of the piece of wood he is working on and adjust his work accordingly.
Do you mean brevity? In your example, there is a certain syntactical  beauty in your lisp example. Not sure if I get what you mean. If you want multiple calls to the same function and have the buffer to be gone after the function returns.
language: c
void some_function() {
        buffer_object buf; //if buf is small
        buffer_object *hbuf = malloc(sizeof(*hbuf)); //if buf is big
This is thread safe, the memory is freed after execution. You can call it multiple times in the same thread.
Replies: >>5444 >>5458
No, not brevity. Brevity would be how short program text is. That is not so important until you have those hueg 30+ character identifiers like the Java people seem to love, or perhaps how Pascal once put types and identifiers in the same namespace and you couldn't declare a variable of type "counter" with the name "counter," you had to create a type "Tcounter," so the language forced you to memorize a style and type one more character than a different language would for something many want to do, although the Pascal case isn't something to use a different language over.

I'm talking about how much you can express with how few language features.
As present in the Scheme standards:
>Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.
This is one half of where modern languages fail, it's okay (and necessary) to have the language provide you conveniences for expressing whatever you want in a clear, simple manner. However, one language is clearly better than another when it manages to do a task as well as a different language but with less baggage. If you fail hard at it enough, you have a huge language like C++ which isn't a convenient language despite its extreme amount of abstractions and features. The abstractions and features distance it from machine code and have caveats the programmer has to mind, slowing programs down and being inconvenient rather than convenient.

Progress in programming languages would be improving an algorithm that is baked into the language, like list traversal in LISP or the zero-terminated strings in C. Improve the algorithm, and the language performs better with no loss in convenience or expressive power.
Progress would also be removing the cruft, like the register, restrict, and inline keywords in C. Remove them and C retains the same performance and expressive power, but with 3 less features for C programmers to occupy their minds with.
Progress would also be coming up with a way to allow programmers to express themselves better. C doesn't have multiple return values, so we use errno, or overload a return value to both signal error and return results like the return values of printf() and malloc(). C itself already finds a way to return multiple return values even if it lacks the syntax, so adding a more friendly syntax  for multiple return values would be a logical improvement. That would probably mean returning values in 2 registers instead of 1 in many cases, so you could say it comes with a performance penalty, but consider it's no worse than using errno and better than returning values through a pointer parameter. Do that, and you gain convenience, with no loss in performance and without truly having added another feature for people to think about.

>the C example
Yes, that would be the C way to do it. Now you have to mind whether you want to pass the address of an object with auto storage duration, or whether you want to call the allocation function, check its return value, pass the pointer, and remember to free it.

LISP sacrifices performance for convenience by having a garbage collector and a single storage duration.

This is why I say that C and LISP are both worth using, but for different reasons. LISP is convenient and of middling performance, C is fast and of middling convenience.

If you take the average of a language A's qualities and it's clearly higher than language B, then there's not much reason to use language B. I can't tell which of C or LISP is better, so either is fine. I can tell Python, C++, and Rust are trash, so it's better to not touch them because they're regressive languages which produce programs that are buggier and/or slower. Let them be buried with COBOL and FORTRAN.
Replies: >>5453 >>5457
I should spend more time with lisp to understand its expressive power. Otherwise I can't find fault with what you said.
Practically, how do you deal with C++ and python having a ton more libraries? I want to use a good language, but I want to see some results now. For example, boost makes a powerful argument for Cpp. One part of my program implements a server/client with a custom protocol, I can get my hands dirty with epoll and socket code, but asio had that done for me. (Although learning the Cpp features and the way to use asio takes way too much time)
Replies: >>5455 >>5457
>Although learning the Cpp features and the way to use asio takes way too much time
I think that's anon's point. Libraries are just code, and having code done for you doesn't make the language better. 
It's like having to choose between completing a 99% done assembly code or doing it from scratch with C. Sure it might be easier to complete the assembly code, but that's not because of inherent properties of the language. Even within that code you're going to be fucked the second you have to modify something within the library or try to implement something extra.
Replies: >>5456
>you're going to be fucked the second you have to modify something within the library or try to implement something extra
Fuck man, are you me? The boost reference docs didn't make it clear how to implement a custom protocol. There are examples and shit but I want to write something right now instead of fucking around for yet another night trying to understand it. I may as well do it again in C, at least I just need to learn posix api.
[Hide] (431.9KB, 2436x1626)
Speaking of Lisp, what the fuck is wrong with functional language documentation. I've seen at least three different languages that just give you an alphanumerically sorted list of symbols and tell you to go fuck yourself. Compare with C and other languages which nearly always have categorically structured sections. I've tried to learn the "core" of Common Lisp multiple times but I've never found a simple piece of documentation that organizes symbols into LISTS, FILES, ARITHMETIC, ETC.
Replies: >>5459 >>5465
Please point me to the part of the machine's reality that is reflected by std::launder.
Have you considered actually reading the book whose symbol index you screenshotted? CLtL does exactly what you're asking for.
Replies: >>5465
If low level/high performance languages like C and C++ were a waste of time there wouldn't be so many high paying jobs.

>you are missing the point, hard.
Right back at you kiddo. Not everyone is a hobbyist.
Replies: >>5462
Have you somehow missed how C++ jobs have dropped hard for the better part of two decades? Not that this is any kind of argument to begin with, by that logic PHP and Cobol are good.
>Right back at you kiddo. Not everyone is a hobbyist.
If anything, it'd be the hobbyists who wouldn't mind a waste of time. Stop thinking in thought terminators you niggercattle.
Replies: >>5463
>Have you somehow missed how C++ jobs have dropped hard for the better part of two decades?
You said C is a waste of time. If that's true then nobody would be paid to write it. So clearly the people who are paying for new C code know something you don't.

>If anything, it'd be the hobbyists who wouldn't mind a waste of time.
It's the hobbyists who don't have to worry about things like performance, latency, power consumption, ram usage, code space etc. When your only objective is to get something working, anything more complicated than that seems like a waste of time. Your mistake was projecting that hobbyist mentality onto everyone else.

>by that logic PHP and Cobol are good.
Have you actually looked at any data or are you just talking out of your ass?
C Jobs New York -  4248 | https://www.indeed.com/q-C-l-New-York,-NY-jobs.html
PHP Jobs New York -   938 | https://www.indeed.com/q-PHP-l-New-York,-NY-jobs.html
Cobol Jobs New York - 126 | https://www.indeed.com/q-Cobol-l-New-York,-NY-jobs.html
Replies: >>5464 >>5466
Formatting faggorty https://www.indeed.com/q-C++-l-New-York,-NY-jobs.html
Racket and Chicken Scheme have good docs:
>https://wiki.call-cc.org/man/5/The%20User%27s%20Manual & https://api.call-cc.org/5/doc/ & https://wiki.call-cc.org/tutorials

Common Lisp has the Hyperspec: http://www.lispworks.com/documentation/HyperSpec/Front/ (also https://www.hexstreamsoft.com/articles/getting-started-with-the-clhs/) But I think you really should use Emacs+SLY to look up documentation from the Hyperspec: M-x sly-hyperspec-lookup (https://joaotavora.github.io/sly/#Documentation)

> I've tried to learn the "core" of Common Lisp multiple times 
If you want a tutorial, read a book that written as one:

There is also:
>Cookbook: https://lispcookbook.github.io/cl-cookbook/
>Wiki https://www.cliki.net/ 
>Quickdocs: https://quickdocs.org/
>Awesome list: https://github.com/CodyReichert/awesome-cl

Do you think Search Engine Optimization is a legit field because idiots pay for it? Is an industry incapable of wasteful behavior on your planet? What the fuck already. A ton of Sepples jobs have very little technical reason to be in Sepples, it's largely maintenance of legacy shit from back when Sepples was the most popular language (which Microsoft had a major hand in) or an attempt to access a larger developer pool (game developers famously do this). Maybe you should read the job listings you posted. I know you haven't because the C++ one lists fucking tech support jobs and a Ruby on Rails position.
>Have you actually looked at any data or are you just talking out of your ass?
Do you know how popular PHP used to be? How hard it dropped off, and why it dropped off so hard? Hell, do you even know what Cobol is? The point is that popularity and compensation have nothing to do with quality or wasting your time by creating unnecessary work.

Stop getting your panties in a twist because someone didn't fellate your languagefu on an anonymous imageboard, holy shit, man. You'd think I insulted your mother with how you react.
Replies: >>5469
>Do you think Search Engine Optimization is a legit field because idiots pay for it?
Irrelevant. If C++ is a useless language then thousands of profit seeking companies would not waste money paying people to use it.

>Is an industry incapable of wasteful behavior on your planet?
Wasteful behavior is punished by lower profits.

>it's largely maintenance of legacy shit from back when C++ was the most popular language
The existence of C11, 14, 17, 20, 23 is proof that C is used for new projects all the time.

>The point is that popularity and compensation have nothing to do with quality or wasting your time by creating unnecessary work.
You're saying that cobol is a bad language by 2022 standards but it was popular in 1962 therefor there is no correlation between popularity and quality? That is a completely illogical argument.

>Stop getting your panties in a twist because someone didn't fellate your languagefu on an anonymous imageboard, holy shit, man. You'd think I insulted your mother with how you react.
Stop projecting. I've been nothing but polite and objective in our discussion.
[Hide] (390.1KB, 1363x1080)
>>4968 (OP) 
What do you guys think of using OpenBSD as a daily driver? Games aren't that much of a concern to me since I mostly only play retro games and Free Software games.
Replies: >>5555 >>5560
There are a few problems I have experienced, but I can live with them or fix them.
>default partition scheme leaves little space for compiling ports and installing programs
>no palemoon, but that's caused by furniggers freaking out
>slow, about 50% slower than linux in my experience
I run it. 
I primarily pirate, read, watch anime, and program.

Easily the best C library in terms of API design, the binary size is poor but the performance is good, the malloc is original and one of the best. The kernel is pretty slow. FDE is easy to use and works well unlike every other OS except FreeBSD. Some programs are """"portable"""" but they don't work well outside their main platform(s) like aria2c, firefox, and mpv-that means they don't work well on OpenBSD. Its hardening features tend to make C undefined behavior crash which is nice for finding bugs in programs, also the task scheduler is randomized which exposes race conditions in multithreaded software. It's the only OS with sane defaults. Many tasks trigger global kernel locks which you notice because the entire OS freezes for a few milliseconds, funnily not an issue on non-mp kernels. Every original OpenBSD program is extremely pleasant to use and works extremely well, unfortunately lots of important system components like the X server aren't original (although their forks are still better than the originals). The documentation is the best of any Unix.
There is a similar project, called Dusk OS: https://git.sr.ht/~vdupras/duskos
[Hide] (267.5KB, 850x1198)
lol imagine being such a wigger that you have your own idea of what a privacy LARPer is while being a privacy LARPer
wigger privacy LARPer:
>CLI crap
>firefox plugins (noscript, umatrix, ublock, tree style tabs [lmao enjoy your lag])
>some fucktarded setups with DNS, X.509, e-mail, IRC
>afraid to type in his console because it might execute commands from the internet or wipe his disk
hapa chad privacy enjoyer
>has own OS
>has own game that doesnt report your hardware registers over the internet [lol no lag unlike wigger games]
>uses a console induced from a programming language instead of bash horseshit
>has web replacement
>kills penguins and nobody cant do naythan
> Website: https://freedos.org/
> Learn C programming in FreeDOS: https://www.youtube.com/watch?v=MpKoh-AabTM&list=PLzuACU-W7Omo3VEnMKuM0IPupdOHFDzL3&index=1
> How to create a packge?: http://wiki.freedos.org/wiki/index.php/Package

To test FreeDOS, simply use QEMU/VirtualBox to create a DOS VM. Give it 500MB-4GB of HDD space and some amount of RAM (like 64MB or more). If possible, use the VM settings to reduce the CPU % to 40% because some buggy programs might consume 100% of CPU. Boot the LiveCD, and type SETUP.BAT (use TAB-completion). Install FreeDOS and reboot without removing the CD. After the reboot, you can use FDIMPLES to install packages from the CD (Pro Tip: the bonus CD contains more packages. the CD gets auto-detected). You can also use FDNPKG to fetch packages from Internet (FreeDOS has TCP/IP networking). Use HELP and APROPOS to find new commands. You can use F1 to get help in programs and use ESC to quit.
Imagine an operating system that allowed unlimited linking between any files or parts of files, renaming and reorganizing the files with no broken links, no restrictions on file naming, multiple names for the same file, the same document (or part of one) can be in many places at the same time, every word in every file is constantly indexed (including spoken and sung words). Viruses are a distant memory. The limits of our imaginations will be the limits of our software.

Replies: >>6715
I skimmed it. It's interesting. If everything is a pointer, where is the actual data stored? What if machines go down?
[New Reply]
58 replies | 11 files
Show Post Actions



- news - rules - faq -
jschan 0.7.0