Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

The Perfect Programming Language

Name: Anonymous 2017-02-27 13:28

What features should it take?

Name: Anonymous 2017-02-27 13:57

Coq

Name: Anonymous 2017-02-27 14:17

- Fully parenthesized S-expression syntax
- Manual memory management (no garbage collection)
- Dynamic scoping only

Name: Anonymous 2017-02-27 16:47

>>2
enjoy your lack of uip, bandwagoner cuck.

Name: Anonymous 2017-02-27 17:23

>>4
>>2-chan can also enjoy their lack of:
machine integers
O(1) access memory
recursion (without either spending ages figuring out how to get it past the termination checker or using Program and ending up with irreducible gobbledy-gook)
turing completeness
being able to get anything done, ever

Name: Anonymous 2017-02-27 17:45

>>4
That's not even a word!

Name: Anonymous 2017-02-27 18:36

S-exp syntax.
Macros like in CL.
Static typing but without overly strict gimmicks like dependent or linear types.
Immutable and mutable collections.
No GC.
Good interop with C and Sepples.

Name: Anonymous 2017-02-27 18:52

>>7
'sepples interop' unless its simple function calls to C++ libraries, sepples will infect your language and mutate it to be a sepples shell.
Case in point:
https://internals.rust-lang.org/t/better-c-interoperability/2650

Name: Anonymous 2017-02-27 22:54

The perfect language should look exactly like R7RS-large.

Name: Anonymous 2017-02-27 23:08

Rust with OCaml-ish syntax instead of that C++-ish monstrosity.

Name: Anonymous 2017-02-28 1:39

user defined syntax, gc, types, cache access / storage with sane defaults and good documentation

Name: Anonymous 2017-02-28 1:55

I suppose you could also have function alias groups to further support `language emulation', ie so we can mimic the function names of language X, along with the syntax / etc

It shall probably be called language X

Name: Anonymous 2017-02-28 4:18

Just use lisp instead, you can easily support other languages with macros.

Name: Anonymous 2017-02-28 5:45

>>13
Just use assembly, you can easily support other languages with macros.

Name: Anonymous 2017-02-28 5:58

McCarthy's original notation used bracketed "M-expressions" that would be translated into S-expressions. As an example, the M-expression car[cons[A,B]] is equivalent to the S-expression (car (cons A B)). Once Lisp was implemented, programmers rapidly chose to use S-expressions, and M-expressions were abandoned.

The reality is that when all datatypes are appropriately declared, a typical commercial Lisp compiler produces native machine code that is comparable in speed ...

Name: Anonymous 2017-02-28 6:06

Doesn't greenspuns rule imply it is relatively easy to implement a lisp in most languages

Name: Anonymous 2017-02-28 6:50

>>16
Greenspun's rule is a scam. The Lispers swindled features from other languages, using their control over academia to stop the teaching of these languages, and claimed them as Lisp features.

https://softwareengineering.stackexchange.com/questions/210274/does-lisp-still-have-any-special-feature-which-has-not-been-adopted-by-other-pro
Mainstream Lisp fans are ignorant of other people's work. All they know is Lisp and C. They conclude ``If it's not in C, it must be from Lisp.'' Eval didn't come from Lisp. Arbitrary-precision integers didn't come from Lisp. Spaghetti stacks didn't come from Lisp. Conditional statements didn't come from Lisp. Conditions didn't come from Lisp.

They have been doing this for over 50 years.
https://www.informatimago.com/articles/flpl/flpl.html
One feature of IPL V is excluded from FLPL by the nature of a compiler. Sequences of IPL instructions to be intrepreted are stored in the computer as NSS lists, just as are the data. Although this property has been largely irrelevant to all programs written to date, it is conceivable that one might want to write a program in which the symbolic entities that are processed are IPL instructions themselves, and in which transfers of control take place between the meta-program and the machine-generated one. The fact that the transformation of FLPL expressions into computer activity is a two-stage, irreversible process places this kind of behavior beyond the range of our language, even though it is quite feasible to manipulate FLPL expressions within FLPL.

Does this sound familiar?

Name: Anonymous 2017-02-28 6:50

>>16
Partially.
Most Lisp implementations are written in C, but C cannot express these constructs natively(some parts like eval and most macro functionality will be very hard to do).

Name: Anonymous 2017-02-28 7:20

high-level: racket with python libraries. unfortunately, neither python implementation in racket (incomplete py2) nor hy (quirky. bad documentation and worse error messages) do the job.

low-level: 'boring C' (that is, a C implementation which defines all undefined behavior in a deterministic way) with an idiomatic (so no unstandarized macros or compiler extensions) way to write machine-specific code and inline assembly.

Name: Anonymous 2017-02-28 7:51

>>18
eval is a bit of a weird command, and macros are just mini-programs that run over your code beforehand?

Name: Anonymous 2017-02-28 9:21

Type-inferred M-Expression LISP-1(with fexpr and quasiquote/readmacros) based on nested Judy Arrays instead of lists and real-time reference-counting instead of garbage collection.

Name: Anonymous 2017-02-28 9:45

Name: Anonymous 2017-02-28 10:05

>>22
nice dubs, FrozenAnus

Name: Anonymous 2017-02-28 21:22

>>8
Okay, I drop the Sepples interop req, just C is enough.

Name: Anonymous 2017-03-01 14:13

>>19
C
low-level

Name: Anonymous 2017-03-01 15:23

>>25
djb's 'boring C' would be pretty low-level if it ever got made

Name: Anonymous 2017-03-01 15:59

All you need is lambda calculus with I/O, everything else is syntactic sugar.

Name: Steve 2017-03-01 18:25

anus as a service

Name: Anonymous 2017-03-01 18:38

>>25
C programmers confuse error-prone and badly designed with low-level.

The only low-level features in C are pointer arithmetic and pointer casting. Plenty of languages have that. In C, it's often the only way to do things. In other languages, it's only needed when you care about the specific address where data is stored.
https://hackage.haskell.org/package/base/docs/Foreign-Ptr.html
http://www.ada-auth.org/standards/12rm/html/RM-13-7-2.html
http://www.freepascal.org/docs-html/ref/refse15.html

Not having a way to handle situations that the CPU detects (like overflow) isn't low-level, just stupid.

Replacing implicit fallthrough with explicit fallthrough doesn't make the language any higher or lower level, just less error-prone.

Writing in assembler is often less error-prone than using C. You can actually use your CPU.

Name: Anonymous 2017-03-01 18:57

>>7
common lisp compiler clasp is aiming to do that except the static typing.

Name: Anonymous 2017-03-01 21:17

>>30
Thanks, I've actually posted Dr. Meister's awesome talk here awhile ago, Clasp is great.

Name: Steve 2017-03-02 1:15

i graciously give dubs to the next poster:

Name: Steve 2017-03-02 1:35

thanks man

Name: Anonymous 2017-03-02 2:42

Clasp my anus

Name: Anonymous 2017-03-03 13:24


Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List