↓ ↑
by Hal Abelson and Gerald Sussman:
https://www.youtube.com/watch?v=_2qXIDO-cWw
>>1
Very cute ending, and I didn't know Hal was behind OpenCourseWare. Their idea
around AI image manipulation for visual programming or solving topological
problems was interesting.
↓ ↑
Hi, i'm trying to learn prolog and wanted to know what would a could path.
Currently, i'm thinking:
1. "Learn prolog now" and/or "Adventure in Prolog" (amzi)
2. "Programming in Prolog" (Clocksin Mellish) and/or "Expert systems in Prolog" (amzi)
3. "Simply Logical"
4. "The power of prolog" and/or "Logic for problem solving, Revisited" (Kowalski)
5. "WAM, a tutorial reconstruction" and/or "The craft of prolog"
"Learn prolog now" and "adventure in prolog" seem to target beginners,
but "Programming in Prolog" is a classic, and i fear a big overlap.
"The power of prolog" is using a recent implementation (scryer) and teach more than the syntax,
but also use-cases, predicates calculus, ... I also quite like the hybrid video/text format.
5. is mainly to understand prolog under the hood, maybe to implement one myself later.
What do you think ? Is there some books that become irrelevant if i read another before ?
How would you prune this list, or is it good like that ?
>>2
I haven't found it recommended when i searched online.
Is it good ? Would you recommend it ?
especially since you already know Scheme
Do I ? ^^
"Clause and Effect: Prolog for the Working Programmer" seems to also be written by Clocksin.
Between that one and "Programming in Prolog", which one would you recommend if you have read both ?
>>4
Thank you for the standard, and i will definitely check Seven languages in seven weeks.
Once i have a good grasp of the language, i might choose scheme for the implementation.
And as you pointed out, some chapters are about logic programming, didn't know that, thx.
I get that the fifth step is optional, but who knows.
I get that the fifth step is optional, but who knows.
You should at least try the "bouillabaisse" to pay your respects to Alain Colmerauer. It's a dish from Marseille where Alain Colmerauer was from. Sadly, he passed away but his personal home page is still up. There are tons of interesting material there for you to read.
http://alain.colmerauer.free.fr
A Brief History of Prolog: http://alain.colmerauer.free.fr/alcol/ArchivesPublications/PrologHistory/19november92.pdf
and if you want a really more involved introduction: http://alain.colmerauer.free.fr/alcol/ArchivesPublications/Prolog3/acmprolog3e.pdf
>>6
Thank you, i had already http://alain.colmerauer.free.fr/alcol/ArchivesTransparents/ChinaApril2011/NatLanguageProlog.pdf
but the whole website is a tresor trove.
Glad someone maintains server cost and domain name.
>>5
I have not read Programming in Prolog, but Clause and Effect recommends it in its preface:
Clause and Effect_ can be a useful companion to two other books. The beginner might use __Clause and Effect as a sequel to the introductory text Programming in Prolog. The more experienced programmer may start with Clause and Effect and be writing useful programs within a few hours.
I thought about trying Prolog. My plan is to....
0. Install SWI Prolog (or Scryer Prolog).
1. Read Learn Prolog Now!
2. Read The Power of Prolog (Markus Triska). + Maybe doing exercises at Exercism?
3. Read Prolog Programming for Artificial Intelligence (Bratko, Ivan)
4. Read The Art Of Prolog (Leon S. Sterling & Ehud Y. Shapiro)
↓ ↑
Do programmers really love writting LOTTA code in most beloved low level unsafe Rust with manual memory management, pointers, and constantly maintaning in mind memory model overhead of a code?
e.g. spending more resources, calories & time on typing more, longer code?
e.g. spending more resources, calories & time on reading longer code?
what would Grugbrain dev say?
is offloading of complexity to compiler, typechecker, static analyzer by making more verbose code (& less human & less accessible) code -- good?
or
is less verbose, less safe, prone to errors & more expressive, more accessible, more natural lang code -- better?
>>2
"Make it correct, then make it efficient, then make it beautiful."
According to the saying above, correctness is the most important. Therefore, one should offload complexity to the compiler to reduce errors.
At some point processor architecture will evolve from babbage's analytic engine to better reflect what we actually use them for today
>>3
one part of my brain agrees, but ...
other part of my brain thinks :
do you really like to write correct proof code yourself (& enforce it on everyone else) (& how big is portion of correct software overall being written & used) where:
1+1=2
requires a proof that 1 & 1 are Natural numbers & positive, non-negative Integers & not Floats or Doubles or chars (but could be bits). A bits that are opposite of (!=) 0 (e.g. not equals (which is revert condition)).
...
etc
There is whole 3 volume book Principia Mathematica from 1912 that spend 360 pages proving 1+1=2.
or, life is short, you write MVP in any practical language of you choice, maybe even ASM, maybe with few small bugs like everywhere, that will be payed to be fixed not by you, you sell your MVP Startup to Google, for 100M. You spend money to meaningful things like donating to FLOSS, offering sposorhip grants for some ones Homotopy type theory research, paying for healthcare of you fam.
e.g. before writing a correct code, heck, even before learning how to write safe correct code, you have to answer one single most important question in Computer Science formulated by Dr.Terry Davis.
most important question in Computer Science formulated by Dr.Terry Davis.
What is that question?
↓ ↑
So we already had
* AI bubble strawberry counting edition
* Video games bubble, covid edition
* Electric cars and associated paraphernalia
* Drone bubble
* Blockchain (kinda over)
* Linux
* DotCom bubble
* PC bubble
* AI bubble electric boogaloo edition
* Video Games crash
* AI bubble
whats next?
I suggest some air drone delivery services bubble, driven by the shoplifting and flashmob looting. Had I been Amazon, I would be organizing these niggers to loot more local stores.
No rewrite-it-in-rust consulting companies.
Already over. Went nowhere. No monies.
People just keep using C#.
Security is not a bubble.
Haven't popped since McAffee began writing viruses to sell his antivirus.
With the advent of AI security will be even more important.
Since one can't trust a video call anymore.
>>26
yeah, but,
how safe we wanna be?
Point is there is no end in 'safety/security' infinite black hole.
AI-powered drone-delivered waifubots
That is precisely why it is not a bubble.
The demon of security will consume everything.
↓ ↑
I kno I'm risking to get 403'd for this thread, from textboarder Scheme tsar, but YOLO, I've been 403'd so many times I have no hope to stay here & might leave this place (so I may just leave & become friends with feds), so this could be my last thread here, I really want to know
So I just noticed this board focused primarily on Lithp derrived family of langs
I mainly been writing in dynamic langs whole my life, and I've seen your infiltration psy-op squadron on Hackernews & everywhere all over the internet brainwhashing me to learn Lisp, with Ritch Hickey & other more mature 'programming uncles' prophets, evangelists earning gazillions of USD from Oracle.
Is there any practical serious benefit for me ($INSERTDYNLANGNAME)ist to not just learn but actually USE Lisp in my day to day projects, life???
I've tried Dereck Banas yt tutorial & a bit of SICP, made Hanoi Towers, and seen some of MIT video lectures Sus man & Abelson ... It has not done miracles to me idk why, I can't grasp Lithp magic or what's so lovely about it that I'll feel the need that'll must use it everyday everythere.
Lisp kind of may be cool in comparison to C C++ Java 1.4 ... but for person using ruby/python/js I don't see benefits of ditching them for Lisp.
The most oversold overhyped biggest selling feature is Metaprogramming with macro. Well, maybe it does feel slightly more natural do do that in Lisp, write DSLs, define own syntax, or write code that generates code, since everything is a List. But I can do SAME, ALL of THIS & everything in Python AST. I can parse it, I can make DSL, define new syntax, new operators, generate code, eval it on the fly.
So why you keep telling me in my face & insisting me that Lisp is better & I have to use it?
Is it me being stupid here, not grasping some aspects of Lisp, or you trying to justify 50k annual spend on your Comp Sci degree by telling everyone what to do?
>>4
Only if you work at Microshaft and have Alyssa P. Hacker, Ben Bitdiddle, Eva Lu Ator, etc. as your colleagues.
>>3
Thing is, I won't insist you have to use it. You started this thread. You asked. If you don't actually care, I don't care either.
Lisp is a better tool for certain jobs. Hard jobs. Stuff outside most people's comfort zone. If all you're writing is glue code to make one API talk to another API, and you don't need it to run on any particular CPU, and nobody will care if you burn a million cycles per arithmetic operation, you can write whatever in Python and that's fine. In fact, you can get paid loads of money for it and it's none of my damn business.
For some other things, having a more intimate knowledge of Lisp will make your life easier and free you to concentrate on the problem at hand, but only if you've already invested the time and energy to develop those skills. If you run into such a problem, it probably won't be worth it to take a detour into building your Lisp muscles first. That's just yak shaving. Go deal with the actual problem.
I don't have anything profound to say. You can develop your Lisp skills by goofing off and doing shit that doesn't matter, with a small chance it might pay off someday as a productivity multiplier. If you can't afford to goof off and try learning random stuff, then I guess you just can't. Is that sad, or is it just reality? I don't really care. It's not my call to make. Perhaps you will learn to be at peace with yourself.
>>6
the >>3 have not started this thread.
I know who started, and we care. Your post/reply >>6, is so vague and abstract without comparison of code side by side, makes me wonder if you posted gpt reply, or ai actually writes & understands subject better than you.
oh, and again, I'm not >>3 and not the one who wrote >>3 `s reply/post.
If all you're writing is glue code to make one API talk to another API, and you don't need it to run on any particular CPU
I want to speak for 99,99% of generic general programmers out there. Most of them are just writing glue code, mostly for web apps, which could be split further to backend & frontend. that being run on x86-64 mostly. And ARM/M1 lately.
watta heck you talking about man, you speaking like your lisp code involves some specific assembly instructions, like r u trollin with 'sed s/C/lisp' ?
lisp/scheme/clojure is high level, GC'ed lang, it's not a low level perfomance oriented with manual memory management, like you painting it to be.
And compilers you say... LLVM, GCC is not coded in Lisp family dialects. Some other langs (& rust) made use of OcaML for compiler.
OP is just saying that aggressive functional push for Lisps, backed by corporate money & shills, is not completely justified to make Ruby/perl/php/python/js developers switch to Lisp family dialects. e.g. it's not a better option for them (aka most of today developers) to spent valuable time/money/calories/resources to switch.
And OP is pretty clear , said how is main selling features of Lisp : DSLs, metaprogramming, introspection reflection - implemented just fine in other said langs. So aggressive religious cult around Lisp dialects are not economically/rationally justified.
I know about Carp, and some low level dialects of Lisp/Scheme designed to run on microcontrollers.
But that is such a micro portion of marketshare.
Your post/reply >>6, is so vague and abstract without comparison of code side by side, makes me wonder if you posted gpt reply, or ai actually writes & understands subject better than you.
I was phoneposting whilst intoxicated. Sorry for not posting code examples. I still won't post any but I'll reply again later to clear up some vagueness.
↓ ↑
Authors don't read. They write.
Will we see SICP and SICM being burned?
>>7
It would be a huge insult to our enlightened religion if those two holy books were to be disrespectfully burnt.
Only the heretical so-called "SICP JS" should be burnt.
read through it, shit report.
4 more years of the stallman
↓ ↑
Strong Static vs Weak Dynamic Typesystems
what's your opinion & based take on this?
I would like to rant here and honestly describe my feelings & story.
My first first programming language was MS-DOS command line & editing batch files. I liked it. When I was around 12 probably maybe. Then we studied informatics in class and did some graphical geometric programming language (like move Point X, Y to X, T coordinate to draw); Then later I coded some Pascal in school, and did short screen splash scene like intro with sounds from PC motherboard speaker. Many ppl were excited to become Delfi developers back then. Upon graduating school, didn't had money for college/uni, I needed to get a job, I browsed job board website found 30 offers for C++ & 150+ for Java. I bought the marketing of 'compile once run everywhere' + free crossplatform jdk+ide, at that time I was a linux user and was unable to sell sould to asp.net C# (& they had small job numbers). So I started to learn "Java in 24h" book, done & learned it, only to find out no one needed me at job market with basic SE, and everyone asked for J2EE EJB Servlets book didn't covered. So despite I wrote few successfull programs I didn't got a job as java dev. I didn't learned/touched/concerned about manual memory management, safety pointers at that point. My only complain was slow GC & long burreaucratic boilerplates Classes OOP to do simple things.
Later then I discovered ruby/python/shellscripts. & omg my productivity skyrocketed, I was able to write useful oneliners and accomplish stuff without writing 2 pages of Java classes. only complain was that IDE (PyCharm) did not static analysis, typechecking, highlights, hower hints popups like Eclipse for Java, and I had to discover & test errors at runtime , but that wasn't big deal for me. And I got the relevant jobs.
(jumping back in time) I need to point out that before learning scripting weak dynamic langs, I've tried to write some programs at work to do useful meaningful work tasks like [working with excel|csv|text|log file, process, grep|edit|sed strings] in ... Java, because I didn't knew perl/python/sed/grep/awk/ruby/shell scripts back than... and it was afwul Class expirience. Massive strong statically typed boilerplates of Classes to do concatenation of strings, or remove spaces. Don't blame Java, it could have been C#/C++ or same shit (idk how bout Rust or Haskell?) at her place.
Don't get me wrong, those cli apps/tools, I wrote for prod, they are not throw away, they are well documented and being used later by dozens of emploiees. so that's not "undocumented one liner throw scripts" like public static void debiloid on hackernews love to blame dynamic scripting langs.
I've noticed that the whole marketing idea (of strong statically typed langs) and justification of pain of writing hard to read boilerplates is Fear Uncertainty & Doubt of errors in runtime.
(I could expand my story more, let me know if you want or if I need) But my point now, that since around 2015 I faced really agressive hype marketing of strong statically typed langs (primarily functional like Haskell). So I decided to give it a try... I jumped in to Type System rabbit hole, and started to learning about curry howard hindley milner bullshit (I'm sorry for being bit dramatic), lambda cube, then trying to pick perfect lang (instrument) to do the development , and since Haskell wasn't perfect a top of the /\^3 , I was forced to look at more expressive typesystems of Coq, Agda, Homotopy type theory, Cubical Type theory, only later to discover that are no implementation of those mentioned langs suitable for production IO. That's how I end up with somewhat practical Idris. (it's review deserve his own separate thread I'm not going to make yet or spoil here) (And I'm not talking ITT about ATS, Lean, Clean & other solvent level Everclear bullshit u could get at gas station).
So what's the poing you may ask? What's the final statement, ending & conclusion? I agree with grugbrain.dev that helpful side of Eclipse IDE was dozen of helpful features. There is no Eclipse/Visual Studio support for Idris/Haskell. There are plugins for Idris for VSCode but they outdated as fuck and don't work , give many problems like:
- node js prevent from starting lsp
- terrible windows support even for MSYS2
- move from Idris1 to Idris2 could have been a mistake such as move from Python2 to 3 breaking many of previous features and new version is raw as fuck n incomplete.
- vscode extensions for statically typed idris throwing at me a lot of cryptic js errors I don't know how to fix. brilliant? paradox & irony
- I don't see good ide for Haskell, and taking my prev expirience in to account, I'm not sure IntelliJ extension will work flawlessly.
- I've used vim, emacs and honestly don't want to be bothered with their unfriendly shitty interface again!
& like ok, even other than awful IDE support, for overhyped, oversold langs, there are still pain of writing boilerplates, Idris doesn't have 'Derrive' like Haskell or .toString() eval() metaprogramming facilities like Python, so it requires to manually write a code for example to convert Bool, primitive datatypes, Records {dick:ts?!} to -> String and backward from String to code. If datatype have 10+ elements, you need to write 10+ lines of code for each to assign it with String, ridiculios.
So, there is like fuckton of problems with strong static typed langs, and I'm not even mentioning here problems of Nix, Rust, C++.
Is it worth it to buy agressive overhyped oversold marketing of strong typed langs (including elegant functional options, maybe Ocaml?) ? Guess the answer. Maybe convince, argue ITT.
And if you say "Hey man, it's just pain down the road if not doing strong static" . I remember Enterprises that hired 100+ Java/C# devs to write web pages, what other company did with 10 PHP devs. If you got more than 50k+$ for the project, sure, safeguard youself with strong static typing, whatever you want. We also got to be grateful to Kusaba, Futaba, and honor first perl/php bbs devs. The productivity equals amount of energy spent on writing a code /:/ amount of working program software output. Strong staticically typed langs do reduce productivity, even in the age of intellisense autotab & gpt, in comparison to rise of productivity of dynamic typesystems. Yes, the dynamic programming language is just like human English language (or GPT), you get full working program with few English words, and maybe with few errors , that you allowed to fix optionally with next iteration if you need, instead inconvinience of writing code in pure hard math expression of typesystem.
P.S.: & I also pay respect to untyped HLA, Forth, out of class C. APL is the greatest language ever existed. Other next big lang is not Rust, or some fancy mumbo jumbo whoop da whloop typesystem. It's plain human lang combined with NN AI GPT to output software apps.</thread>
God forgive me if I'm wrong, I wrote & code in good faith.
Type systems are a mere implementation detail. I want to program declaratively using a high level programming language such as English and let the code monkey "programmers" compile the English instructions to a lower level programming language such as Lisp and assembly.
Do you like F*?
https://fstar-lang.org/
>>4
Register x0 is constant
>>7
I see you haven't experienced register failure, or tampering.
x0 is not constant, xzr is.
↓ ↑
The link in the footer returns 404.
https://mitpress.mit.edu/sites/default/files/sicp/index.html
RISICP
Great. We may now move on to do better things by using practical programming languages and techniques. Once we have completed our studies of SICPology, we must enter a brave new world.
https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html
↓ ↑
I know Schemers take pride in how many of their special forms can be derived just from a few fundamental forms, but in Smalltalk they don't even have special forms, everything is just messages and there's the non-local exit ^. Does this make Smalltalk better than Scheme?
>>5
oopfrens should just use functions then
Has Scheme been implemented in Smalltalk? Has Smalltalk been implemented in Scheme?
That is the question.
Smalltalk
Bigtalk when ╮( ̄ω ̄;)╭
Smalltalkers waste all their time on small talk. Schemers waste all their time on scheming. As a result, both groups never get anything done.
>>7
http://books.pharo.org/booklet-AMiniSchemeInPharo/
Pharo is a Smalltalk dialect.
↓ ↑
I am thinking of using Dash because it is less bloated than other shells in the Bourne shell family (e.g. Bash and zsh).
PowerShell, because it's crossplatform.
I'm thinking about trying Ion (from Redox) or Elvish (or possibly even nushell).
https://doc.redox-os.org/ion-manual/
https://elv.sh
https://www.nushell.sh/book/quick_tour.html
Unix in Lisp?
https://github.com/PuellaeMagicae/unix-in-lisp
But the questions is, is this this too much voodoo?
Rash: The Reckless Racket Shell
https://rash-lang.org
PowerShell is kind of interesting. I'm still very new,. Are you interested in trying it: https://books.goalkicker.com/PowerShellBook/
# help system
Update-Help -ErrorAction Continue
help Get-Process # alias for Get-Help foobar | more
Get-Help -examples Out-GridView
Get-Process | Get-Member # pipe object, not text
Get-Command *json* # which commands contain "json"?
Get-alias select
Get-Verb
Show-Command Get-Process # open a GUI for command
# List processes without active windows.
# it's formatted in a GUI table thing.
# You could also use Format-Table or Format-List
#
# let's checks if mainWindowTitle property for each process is $null and select those objects:
Get-Process | Where-Object -EQ -value $null {$_.mainWindowTitle} | Out-GridView
# who is using up teh RAM?
Get-Process | Sort-Object -Property WS | Select-Object -Last 5
# calculate file checksum
Get-FileHash gentoo.iso
# find new files added in the last 7 days
Get-ChildItem -Path Downloads -Recurse | Where-Object CreationTime -gt (Get-Date).AddDays(-7)
# find large files, convert size to MB with 2 decimal places, sort by the new "Size (MB)" property and format as table
Get-ChildItem -Path Downloads -Recurse | Where-Object { $_.Length -gt 255MB } | Select-Object FullName, @{Name="Size (MB)"; Expression={ [math]::Round(($_.Length / 1MB), 2) }} | Sort-Object -Property "Size (MB)" | Format-Table