Hi. in 53:17, the answer was supposed to be just 'you guessed it'. You explained the solution as "I should've put 'this is not the number' up here at the top." So, I tried to put that specific code both before and after the X equation and this didn't seem to fix my problem. I'd love to receive a little bit of your help. I'm writing a thesis and using this program.
The problem of Prolog is that the meaning is assigned by the human . loves (stacy, chad). for Prolog is different than l ( s, c). Basically, the meaning remains in the head of the human and Prolog is completely void of capturing the meaning of 'Stacy loves Chad'. The same applies to any other programming language I am aware of. THEY ALL FAIL TO CAPTURE MEANING, AWARENESS, CONTEXT, etc. ! Why the programming languages are still not self-aware in the 21-st century????!!!!??? Somebody Explain. (is it because the captains of the software industries are afraid for their empires?) It is outrageous that nobody is doing something about it (i.e. as a far as I am aware) !!!!
@@hypothetic3945 Your thesis is probably long finished, but to help out those who are looking for answers. This is how I rewrote the number guessing game: %rewritting guess number thing guess_num:-loop(start). loop(start):- write('Guess Number '), read(Guess), loop(Guess). loop(15):-write('You guessed it'). loop(X):- X\=15, write(X), write(' is not the number '), loop(start).
If all you want to do with your CS major is building Wordpress websites then it's understandable why you don't understand why would you want to learn Prolog.
Its so great that you use sound engeneering for your mic and cut the moments when you write code. so the presentation is compact and dense with information that is easy to watch. I really appreciate this quality in your videos (Ive seen few already, like HASKELL) :]
you seriously go above and beyond with these. So high quality in so many ways. The time stamps and cheat sheet I am especially grateful for. Thank you.
Derek Banas, I tried slogging through the "Art of Prolog" but was recommended your video by a friend of mine. You not only effectively concatenated a detailed reading of the first few chapters, but improved upon their clarity. I feel like I can return to the later chapters of the book now with an improved understanding. Thanks again.
Genuinely would've failed my course if it wasn't for this video. Seems to be so little information about prolog online, and my lecturer was no use at teaching it either. Thanks a lot for making this.
@@derekbanas Please make an Oz tutorial haha We really need it. Our teacher decided to teach us that language and there aren't many sources online about it :,)
For all you guys asking about the source of the db.pl file, you'll have to create manually, follow these steps: 1- Go to gnu prolog menu and click on file then change directory 2- Use a current directory or just create a new folder that will only be used for prolog projects 3- Create your db.pl file using any text editor on your OS (leave the file empty)
Brooo. In contrast to my Logic lecturer you're making Prolog sound logical and usable. Before watching this video I got the impression it was some sort of ancient Vulcan pureblood language. Thank you!!!!
Note: to print out text, you can use writef() instead of format() and % instead of ~ [ just because writef() is close to printf() from C which many would be more familiar with ].
Excellent Tutorial, thanks Derek! I had Prolog during College for 6 months and learn nothing at all, now I am trying to keep up to speed with AI and your tutorial was very complete and understandable.
Reminder: 2:27 - On this page, Derek already had the packages selected...if this is your first time installing, then these packages would have n/a beside it. In order to get those two boxes with the x in the first one, press 'Skip'...yes, it toggles. Check off all the corresponding packages mentioned in this tutorial. 5:00 - Notice there are two files, helloworld.cpp and helloworld.h, in the directory. How did helloworld.cpp get there? I could be wrong, but maybe he saved the file as another file with .cpp as the extension. That's what I did and it worked for me when I ran the helloworld.cpp file.
+GettnSehway 1. Make sure your file has the .cpp extension 2. Make sure that file is located in the folder with your name in the home directory for cygwin (ie: cygwin64 --> home --> (your name). If that doesn't work, then sorry I'm not too sure what to do.
Just the right amount of detail and explanation for someone who is familiar with imperative languages. I definitely prefer watching this tutorial than reading through 80 different sources for documentation on prolog, thanks for the video Derek.
Just that example at 12:53 between if and the prolog syntax makes everything much more clear. Why did my prof had to make it look so complicated... Love you Derek
51:35 - there is an error in your count_up implementation, check with value of Low other than 0. You should skip 'Z is ...' statement and go directly for write(Y). With our implementation, Y already starts from the Low, so there is no need to add it.
I need to learn Prolog at the university, i study in language science and although i'm really bad with computer (the level of your grandparents probably) Prolog kinda feel more intuitive to me than Python, java or anything else alike. I could understand programmers could have difficulties understanding the purpose of this kind of language and finding it horrible but it's the best language for things like the automatic treatment of languages.
I think the name and the sentece are deceptive : get_grandparent :- parent(X, carl), parent(X, charlie), format('~w ~s grandparent ~n', [X, "is the"]). This is better : get_parent :- parent(X, carl), parent(X, charlie), format('~w ~s ~n', [X, "is parent's carl and charlie "]). (sorry about my english mistakes, my english isn't perfect)
I wrote a prolog interpreter in python. But it was more simular to english. i.e In prolog: Loves(romeo,juliet) In my python interpreter: Romeo loves juliet
Wow, thanks a lot! I went from not even knowing where to start with this language because articles I found were very confusing even though I am an experienced programmer. Even though you did not cover installation on Linux I was able to gather enough information as to what I needed and that was enough to get me started. Excellent tutorial as always.
The best tutorial I've ever seen. I'm a learn-by-example guy so your 1 hour video helped more than 5 hours of lectures my professor gave with vague explanations and theories.
Thank you so much, on the course of 8 weeks of studying prolog, I barely knew how to write a prolog program, but thanks to your video, I can easily do it now!!!
20:45 wrong bob is the parent, this code works shows the actual grandparents get_grandparent :- parent(X, carl), parent(X, charlie), parent(Y, X), format('~w ~s grandparent ~n',[Y, "is the"]).
Actually this code is enough as you don't need two children to get the grandparents: get_grandparent :- parent(X, carl), parent(Y, X), format('~w ~s grandparent ~n',[Y, "is the"]).
For those visiting: Windows 10 has WSL, which is a proper linux compatible with windows in both directions. With Windows 11, you can even run unix GUI programs out of the box.
Wanted to share my implementation of the number guessing game: guess_num :- write('Guess number'), read(Guess), play(Guess). play(15) :- write('You guessed it!'). play(X) :- X \= 15, write(X), write(' is not the number'), nl, guess_num.
+Alexandre Marques Thank you :) They produce milk in a weird way. I love slipping in strange topics like that. It is called crop milk. Crop milk bears little resemblance to mammalian milk, the former being a semi-solid substance somewhat like pale yellow cottage cheese. I'm strange by the way :)
I would have been doomed without this very helpful video. My project was to make a program that a had bunch of facts for symptoms of diseases and we were tasked with adding symptoms to a person and running tests and getting it down to one disease or more that all have the same tests or symptoms and treatments, unfortunately he didn't go over dynamic facts or how to format of I/O. We also didn't have a book for this, greatly appreciated this video. Thank you!
Great tut but I think that at 9:30 the question you're typing is "who romeo loves" instead of "who loves romeo". But, you know, with love beeing mutual in this case, unlike in the real life :), the answer is the same for both questions.
This is one of the best tutorials ever seen. Please consider joining Udemy. You can earn extra cash, teaching people cool stuff a bit more organized that youtube.
If on Windows 10, dont try to install cygwin - turn on the WSL 2 package, install a Linux distro from the windows store, then open a linux terminal and install prolog there using apt install.
If anyone is getting `existence_error` in the romeo and juliet example, see if you're on version 1.4.5. This version is bugged and using "consult" or "[db]" to load the database is broken for a lot of statements. You'll want to either use an older version like 1.4.4 in the video or compile the database first then run it using `gplc db.pl` then `./db`.
Great series of videos! At 22:14 should I read it " X is the grandparent of Y , as long as, Z is the parent of X and Y is the parent of Z." If so should it not be named grand_child? I'm very possibly reading it wrong.. ??
I must admit that I'm really impressed with all your broad knowledge. I'm studying CS and I'm focused on AI and I must admit that there is nothing better than watching your videos while lying in bed last thing before going to sleep. I'll barely turn TV on anymore with you here. Really helpful and informative. P.S. what do you do for a living and whats your education if I may ask?
ianSD Thank you for all the compliments :) I went to school for electrical engineering and graphic design. Strange pairing I know, but I already knew how to program and wanted to work in special effects in Hollywood many years ago. I have been working as a private consultant for over the last decade. I mainly make online stores and private Android apps.
For any other beginners that run into the same issue.. For commands like [db]., listing., and consult('db.pl') to work, you need to start gprolog in the terminal in the same directory that you have saved your knowledge base. Otherwise, you will get an uncaught exception.
in 20:35 where you modified the get_grandparents function, it actually became the get_parents function. You forgot to change the string and name to match that.
hey dude. this is awesome. i'm not going to say "subbed" or anything, rather i'm going to watch every single video you got. one thing you forgot was the environment variables. i already know how to do it, so i was lucky, but i remember a time when i didn't and it took forever and lots of frustration to figure it out. thank you so much for the video! you do really well
Wow that is honestly fantastic. I have looked at tons of tutorials and not one of them actually showed me how to write my first one-line program. Thank you so much - gottit !
well not in my zone. The last dev that I saw using Linux formated his own hdd by mistake while he was trying to format an external hdd on terminal :B And the mac ones, ehm, I Always see them Always using dual boot :S ... And idk why did I made that question rofl, swi-prolog is bad everywhere
You seem to know it quite well though! What is the main purpose of this language? Would you be able to answer that for me? Also thanks again for the video, got me through my homework!
It's meant to be used for artificial intelligence to help store information and help robots make decisions. Other than AI though it's basically useless lol
I am trying to learn PROLOG to use on constraint logic programs (CLP) in a staff scheduling context, namely to find efficient staff schedules for 24-hour operations given a set number of people and a set budget of available time per person. No robots are involved :-) I still have a long way to go. List creation through recursion warps my mind and declarative predicate programming is still a new concept to me.
12 hours of lecture condensed to ~63.5 minutes. Thanks, as always, for doing what you do my guy. Now to ponder the life choices of going tens of thousands of dollars into debt and licking tenured boots for 4-5 years to gain knowledge I could've learned in 6 months with youtube...
Thank you :) Happy I could help. I have pondered what universities will become. My mother is a college professor by the way. I think 90% of the value of going to college is found in the networking. If done right that is extremely valuable. Of course there are a few amazing professors that can change a persons life, but they are few and far between. That is why I consider the current zoom college experience to be basically worthless.
You are helping me a lot! I came back to tell you that in 4 days,with your starting tips on this video i learned much more than i did in half a semester . My skill got from 10% to 90% because i finally understood how Prolog works and i aced the exam.Now i`m working on creating a MySql database project with help from your videos later on watching your Haskell tutorial and who knows what goodies i`m going to find next! I`m reccomending you to my coleagues so they can catch up the things that college unfortunately didn`t manage to teach us ! God knows why.
25:52 That's where I say Prolog is not for me, because data and compute are jumbled together, which they shouldn't be, if only because of AI, data analytics and specialised IT jobs. Also, Prolog tries to represent data in terms of predicate logic, which is odd. Nowadays we have graph databases which are clearly separated from the programs that use them. For me, Prolog is only interesting for historical reasons, because it dates from an early period where software wasn't yet a separate thing from the math/logic realm that gave it birth.
Mistake at approx 59:18, after you enter "List1 = [a,b,c]." (note the period) and then queried "?- member(a, List1)". The results are not as expected and you didn't notice this. In fact, List1 is out of scope. I found, if you use a variable, you must put a comma after List1 = [a,b,c], in order to refer to the variable.
I don't think count_down at 51:00 is doing what you'd want it to do. It works for if your lowest is 0, but not when it's anything else. I think it should be: count_down(Low, High) :- X is High - Low, between(0,X, Y), Z is High - Y, write(Z), nl. to work with any range given.
penguins doesnt produce milk,that stuff its not really milk :P great basic tutorial tho, thanks a lot! All other info on control logic programing looks like written in soviet russia
Totally right, I almost never read _learning_ textbooks on anything written by russian scientists - they can't write tutorials in principle, but dump their brain knowledge porridge onto paper, so you must already know a lot to read that mind flow.
Installation problem: I'm checking if cygwin was properly installed. At the terminal, when typing " g++ hellowoworld.cpp -o helloworld", I receive the message "-bash: g++: command not found". I also noticed that I only have the helloworld.h file (after creating it with notepad++). How do I get the .cpp file that? Thanks for the video!
also, when checking the "Devel" items to download, I couldn't find these options shown in the video. I'm not sure it it's related to the problems I'm having at the installation.
So, here is what I noticed: the options inside "Devel" that are being worked with are usually minimized. Try finding them by checking the code number or names, that worked for me. But I ran into another problem after installation, so I'm learning C++ using Microsoft Visual Studio instead, and other video tutorials
At 51:15 i think the code for count down and count up is wrong, they only work when Low is 0. I think these work universally, please let me know if I'm wrong count_up(Low, High):- between(Low, High, Z), write(Z), nl. count_down(Low, High):- between(Low, High, Y), Z is Low+High-Y, write(Z), nl.
i came here from java tutorials search i watched your prolog tutorials when i had to take that course in university its really a fun language because you have to really think different than most other languages but in the end its pure logic thats why its called pro(gramming in )log(ic)
Derek Banas That would actually be great because i am new to iOS development and through you i actually learned basics in Android Development and I am grateful about that. So keep your work and thank you for your awesome videos. :)
I had to attend lab tutorials in my college for the whole semester but not learning anything. Here, it takes me 10 minutes for everything to start making sense.
If only professors all over the world were as dedicated as you and many other youtubers who explain things in great detail..... In sam cooke’s voice: “what a wonderful world this would be”
Derek, you are an amazing man! I've just founded your channel, and now there are tons of videos to watch for me and learn them all. Apprecieta that man!
When i read the course books that cover this topic, it feels like they are written by an abstract artist who is a little too much into wordplay and overly complicated language. Thanks for putting the topic in simple words man. Nothing is fuzzy anymore.
it's definitely not an imperative language, gotta wrap up my head around declarative and functional, I like it but ti's all new to me, thx from 5 years in the future
It is much simpler to think that predicate(X,atom, another). defines N-ary _relation_ between variable X and two atoms. In that model we can represent classical table of RDBMS as aa lot of tablename(fielda,fieldb,...) with same name and arity
brother(A,B) :- parent(C,A),parent(C,B). it gives the result of bob -> brother of bob , possibly because alice is also parent of bob . so i suppose you must add more parameters like wife and husbund or mother and father :)
Note to anyone watching: the count_down and count_up definition written in this video only work if you use the low value of 0. Otherwise the practice of doing 'High - x' and 'Y - Low' will not start and end where you expected them to. The count down/up will be offset by your min value.
Learn in One Videos for Every Programming Language
Subscribe to Bookmark them: bit.ly/2FWQZTx
C++ : ua-cam.com/video/Rub-JsjMhWY/v-deo.html
Python : ua-cam.com/video/N4mEzFDjqtA/v-deo.html
Java : ua-cam.com/video/n-xAqcBCws4/v-deo.html
PHP : ua-cam.com/video/7TF00hJI78Y/v-deo.html
MySQL : ua-cam.com/video/yPu6qV5byu4/v-deo.html
JavaScript : ua-cam.com/video/fju9ii8YsGs/v-deo.html
C# : ua-cam.com/video/lisiwUZJXqQ/v-deo.html
HTML5 : ua-cam.com/video/kDyJN7qQETA/v-deo.html
CSS3 : ua-cam.com/video/CUxH_rWSI1k/v-deo.html
JQuery : ua-cam.com/video/BWXggB-T1jQ/v-deo.html
TypeScript : ua-cam.com/video/-PR_XqW9JJU/v-deo.html
ECMAScript : ua-cam.com/video/Jakoi0G8lBg/v-deo.html
Swift : ua-cam.com/video/dKaojOZ-az8/v-deo.html
R : ua-cam.com/video/s3FozVfd7q4/v-deo.html
Haskell : ua-cam.com/video/02_H3LjqMr8/v-deo.html
Handlebars : ua-cam.com/video/4HuAnM6b2d8/v-deo.html
Bootstrap : ua-cam.com/video/gqOEoUR5RHg/v-deo.html
Rust : ua-cam.com/video/U1EFgCNLDB8/v-deo.html
Matlab : ua-cam.com/video/NSSTkkKRabI/v-deo.html
Arduino : ua-cam.com/video/QO_Jlz1qpDw/v-deo.html
Crystal : ua-cam.com/video/DxFP-Wjqtsc/v-deo.html
Emacs : ua-cam.com/video/Iagbv974GlQ/v-deo.html
Clojure : ua-cam.com/video/ciGyHkDuPAE/v-deo.html
Shell : ua-cam.com/video/hwrnmQumtPw/v-deo.html
Perl : ua-cam.com/video/WEghIXs8F6c/v-deo.html
Perl6 : ua-cam.com/video/l0zPwhgWTgM/v-deo.html
Elixir : ua-cam.com/video/pBNOavRoNL0/v-deo.html
D : ua-cam.com/video/rwZFTnf9bDU/v-deo.html
Fortran : ua-cam.com/video/__2UgFNYgf8/v-deo.html
LaTeX : ua-cam.com/video/VhmkLrOjLsw/v-deo.html
F# : ua-cam.com/video/c7eNDJN758U/v-deo.html
Kotlin : ua-cam.com/video/H_oGi8uuDpA/v-deo.html
Erlang : ua-cam.com/video/IEhwc2q1zG4/v-deo.html
Groovy : ua-cam.com/video/B98jc8hdu9g/v-deo.html
Scala : ua-cam.com/video/DzFt0YkZo8M/v-deo.html
Lua : ua-cam.com/video/iMacxZQMPXs/v-deo.html
Ruby : ua-cam.com/video/Dji9ALCgfpM/v-deo.html
Go : ua-cam.com/video/CF9S4QZuV30/v-deo.html
Objective C : ua-cam.com/video/5esQqZIJ83g/v-deo.html
Prolog : ua-cam.com/video/SykxWpFwMGs/v-deo.html
LISP : ua-cam.com/video/ymSq4wHrqyU/v-deo.html
Express : ua-cam.com/video/xDCKcNBFsuI/v-deo.html
Jade : ua-cam.com/video/l5AXcXAP4r8/v-deo.html
Sass : ua-cam.com/video/wz3kElLbEHE/v-deo.html
Hi. in 53:17, the answer was supposed to be just 'you guessed it'. You explained the solution as "I should've put 'this is not the number' up here at the top." So, I tried to put that specific code both before and after the X equation and this didn't seem to fix my problem. I'd love to receive a little bit of your help. I'm writing a thesis and using this program.
The problem of Prolog is that the meaning is assigned by the human .
loves (stacy, chad).
for Prolog is different than
l ( s, c).
Basically, the meaning remains in the head of the human and Prolog is completely void of capturing the meaning of 'Stacy loves Chad'.
The same applies to any other programming language I am aware of. THEY ALL FAIL TO CAPTURE MEANING, AWARENESS, CONTEXT, etc. !
Why the programming languages are still not self-aware in the 21-st century????!!!!??? Somebody Explain.
(is it because the captains of the software industries are afraid for their empires?)
It is outrageous that nobody is doing something about it (i.e. as a far as I am aware) !!!!
Could you add 00:00 mark in description. That way we can see the sections in the progress bar
how do we get the terminal on windows
@@hypothetic3945 Your thesis is probably long finished, but to help out those who are looking for answers. This is how I rewrote the number guessing game:
%rewritting guess number thing
guess_num:-loop(start).
loop(start):-
write('Guess Number '),
read(Guess),
loop(Guess).
loop(15):-write('You guessed it').
loop(X):-
X\=15,
write(X),
write(' is not the number
'),
loop(start).
that video was worth it. learned more in the first 10 min then what i did in my college course after a half of a semester. thank you very much :D
Thank you :) I'm very happy that it helped
hey man , is this working on windows or only for mac ?
works for both windows and mac.
why did the c++ tut take me here? I am terribly sorry
Seriously? If that's the case either your teacher sucks or you never did anything for the course...
can't believe my college is making me learn this instead of python in 2020.
I agree
Same Bro :/
SAME
IKR!!!
If all you want to do with your CS major is building Wordpress websites then it's understandable why you don't understand why would you want to learn Prolog.
Its so great that you use sound engeneering for your mic and cut the moments when you write code. so the presentation is compact and dense with information that is easy to watch. I really appreciate this quality in your videos (Ive seen few already, like HASKELL) :]
None of the editors allow a .pl file to be created that are on my OSX. Looking for the editor this author used.
@@carlrossi it is sublime text,
but you can use vs-code
@@carlrossi Lirterally any editor that isn't comlete garbage should be able to edit text files, regardless of suffix.
you seriously go above and beyond with these. So high quality in so many ways. The time stamps and cheat sheet I am especially grateful for. Thank you.
Thank you very much :)
Derek Banas,
I tried slogging through the "Art of Prolog" but was recommended your video by a friend of mine. You not only effectively concatenated a detailed reading of the first few chapters, but improved upon their clarity. I feel like I can return to the later chapters of the book now with an improved understanding.
Thanks again.
I'm happy I was able to make Prolog easier to understand. Yes that book is very complex I agree
Genuinely would've failed my course if it wasn't for this video. Seems to be so little information about prolog online, and my lecturer was no use at teaching it either. Thanks a lot for making this.
5:30 Tutorial starts (To skip installation process)
He has that (and lots of other timestamps) in the video description.
It's already 2021 and this video saved me! Thank you.
As we're taking remote classes, my teachers didn't have enough time to teach it
I'm very happy that I could help :)
@@derekbanas Please make an Oz tutorial haha We really need it. Our teacher decided to teach us that language and there aren't many sources online about it :,)
For all you guys asking about the source of the db.pl file, you'll have to create manually, follow these steps:
1- Go to gnu prolog menu and click on file then change directory
2- Use a current directory or just create a new folder that will only be used for prolog projects
3- Create your db.pl file using any text editor on your OS (leave the file empty)
Thank you for sharing :)
no problem
Also make sure it's db.pl, and not db.pl.txt
I made that mistake.
Brooo. In contrast to my Logic lecturer you're making Prolog sound logical and usable. Before watching this video I got the impression it was some sort of ancient Vulcan pureblood language.
Thank you!!!!
I'm happy I could help :)
Note: to print out text, you can use writef() instead of format() and % instead of ~ [ just because writef() is close to printf() from C which many would be more familiar with ].
Amazing video, sums up a quarter of my semester in an hour! Why don't we have more teachers like you in university! :)
+Marb Thank you :) I'm here for free when ever you need me.
Thanks for making this video, the first 45 mins for enough to cover all the topics that we covered in one semester
Excellent Tutorial, thanks Derek! I had Prolog during College for 6 months and learn nothing at all, now I am trying to keep up to speed with AI and your tutorial was very complete and understandable.
Thank you very much :) I'm very happy it helped
Reminder:
2:27 - On this page, Derek already had the packages selected...if this is your first time installing, then these packages would have n/a beside it. In order to get those two boxes with the x in the first one, press 'Skip'...yes, it toggles. Check off all the corresponding packages mentioned in this tutorial.
5:00 - Notice there are two files, helloworld.cpp and helloworld.h, in the directory. How did helloworld.cpp get there? I could be wrong, but maybe he saved the file as another file with .cpp as the extension. That's what I did and it worked for me when I ran the helloworld.cpp file.
+GettnSehway 1. Make sure your file has the .cpp extension
2. Make sure that file is located in the folder with your name in the home directory for cygwin (ie: cygwin64 --> home --> (your name).
If that doesn't work, then sorry I'm not too sure what to do.
if the compiler doesn't like the line "#include " does that mean the installation hasn't worked?
Just the right amount of detail and explanation for someone who is familiar with imperative languages.
I definitely prefer watching this tutorial than reading through 80 different sources for documentation on prolog, thanks for the video Derek.
Thank you :) I'm happy it helped
If anyone struggles at 5:00 just save the text file as .h and then save a copy as .cpp :)
but how does it become an application?
By using the terminal he creates.
g++ helloworld.cpp -o helloworld
thanks
Just that example at 12:53 between if and the prolog syntax makes everything much more clear. Why did my prof had to make it look so complicated...
Love you Derek
Love you too :)
51:35 - there is an error in your count_up implementation, check with value of Low other than 0. You should skip 'Z is ...' statement and go directly for write(Y). With our implementation, Y already starts from the Low, so there is no need to add it.
@@May-zs7rf Sorry if i'm late by 2 years,
count_down(Low, High):-
between(Low, High, Y),
Z is Low+High-Y,
write(Z), nl.
I need to learn Prolog at the university, i study in language science and although i'm really bad with computer (the level of your grandparents probably) Prolog kinda feel more intuitive to me than Python, java or anything else alike. I could understand programmers could have difficulties understanding the purpose of this kind of language and finding it horrible but it's the best language for things like the automatic treatment of languages.
I think the name and the sentece are deceptive :
get_grandparent :-
parent(X, carl),
parent(X, charlie),
format('~w ~s grandparent ~n', [X, "is the"]).
This is better :
get_parent :-
parent(X, carl),
parent(X, charlie),
format('~w ~s ~n', [X, "is parent's carl and charlie "]).
(sorry about my english mistakes, my english isn't perfect)
Noticed that too and decided to check the comments. Thanks!
Here is how to find all who are grandparents :)
get_grandparents :-
parent(X, Y),
parent(Y, Z),
format('~w ~s ~w~n', [X, "is grandparent of", Z]).
I wrote a prolog interpreter in python.
But it was more simular to english.
i.e
In prolog:
Loves(romeo,juliet)
In my python interpreter:
Romeo loves juliet
Wow, thanks a lot! I went from not even knowing where to start with this language because articles I found were very confusing even though I am an experienced programmer. Even though you did not cover installation on Linux I was able to gather enough information as to what I needed and that was enough to get me started. Excellent tutorial as always.
Thank you :) I'm happy I could clear up a very useful language
The best tutorial I've ever seen. I'm a learn-by-example guy so your 1 hour video helped more than 5 hours of lectures my professor gave with vague explanations and theories.
+Chen David Thank you for the nice compliment :) I'm happy that it helped.
Good intro.
p.s. count_up and count_down seem wrong, only work well if Low is 0.
Thank you so much, on the course of 8 weeks of studying prolog, I barely knew how to write a prolog program, but thanks to your video, I can easily do it now!!!
20:45 wrong bob is the parent, this code works shows the actual grandparents
get_grandparent :-
parent(X, carl),
parent(X, charlie),
parent(Y, X),
format('~w ~s grandparent ~n',[Y, "is the"]).
lmao. i was confused scrolling through the comments trying to find proof for this flaw.
I also got confused at this.
Actually this code is enough as you don't need two children to get the grandparents:
get_grandparent :-
parent(X, carl),
parent(Y, X),
format('~w ~s grandparent ~n',[Y, "is the"]).
For those visiting: Windows 10 has WSL, which is a proper linux compatible with windows in both directions.
With Windows 11, you can even run unix GUI programs out of the box.
Thanks a lot for the awesome tutorial Derek. Resolved a lot of my confusions! Can you do a video on Assembly please :)
Paras D You're very welcome :) Yes I'm moving towards assembly. I'm going to start making a few electronics tutorials as well soon.
Derek Banas I am Looking Forward To it Thank You Mr.Derek
Wanted to share my implementation of the number guessing game:
guess_num :-
write('Guess number'),
read(Guess),
play(Guess).
play(15) :- write('You guessed it!').
play(X) :-
X \= 15,
write(X),
write(' is not the number'), nl,
guess_num.
Great tutorial!! And I didn't know that penguins produce milk! :-O Thank you Derek
+Alexandre Marques Thank you :) They produce milk in a weird way. I love slipping in strange topics like that. It is called crop milk. Crop milk bears little resemblance to mammalian milk, the former being a semi-solid substance somewhat like pale yellow cottage cheese. I'm strange by the way :)
I would have been doomed without this very helpful video. My project was to make a program that a had bunch of facts for symptoms of diseases and we were tasked with adding symptoms to a person and running tests and getting it down to one disease or more that all have the same tests or symptoms and treatments, unfortunately he didn't go over dynamic facts or how to format of I/O. We also didn't have a book for this, greatly appreciated this video.
Thank you!
Thank you :) I'm very happy that it helped
Great tut but I think that at 9:30 the question you're typing is "who romeo loves" instead of "who loves romeo". But, you know, with love beeing mutual in this case, unlike in the real life :), the answer is the same for both questions.
Thanks for not using the biased Intel C++ compiler that cripples performance for non Intel CPU's.
His voice sounds so mechanical, nice tutorial as well!
This is one of the best tutorials ever seen. Please consider joining Udemy. You can earn extra cash, teaching people cool stuff a bit more organized that youtube.
Thank you for the nice compliment :) I make enough money on YT. I'd feel bad if I charged people
If on Windows 10, dont try to install cygwin - turn on the WSL 2 package, install a Linux distro from the windows store, then open a linux terminal and install prolog there using apt install.
51:24 count_down only works when Low is 0. Should be "Z is Low+High-Y". Similarly for count_up, should be "Z is Y".
Дякую! Срані держіспити, це лайно вчити!
Like якщо з 3го курсу могиляночки
If anyone is getting `existence_error` in the romeo and juliet example, see if you're on version 1.4.5. This version is bugged and using "consult" or "[db]" to load the database is broken for a lot of statements. You'll want to either use an older version like 1.4.4 in the video or compile the database first then run it using `gplc db.pl` then `./db`.
Can you please tell me the command to install 1.4.4 version?
Great series of videos! At 22:14 should I read it " X is the grandparent of Y , as long as, Z is the parent of X and Y is the parent of Z." If so should it not be named grand_child? I'm very possibly reading it wrong.. ??
Nope, you are right.
I must admit that I'm really impressed with all your broad knowledge. I'm studying CS and I'm focused on AI and I must admit that there is nothing better than watching your videos while lying in bed last thing before going to sleep. I'll barely turn TV on anymore with you here. Really helpful and informative. P.S. what do you do for a living and whats your education if I may ask?
ianSD Thank you for all the compliments :) I went to school for electrical engineering and graphic design. Strange pairing I know, but I already knew how to program and wanted to work in special effects in Hollywood many years ago. I have been working as a private consultant for over the last decade. I mainly make online stores and private Android apps.
Great lecture. Wish there was more on lists as it relates to recursion.
For any other beginners that run into the same issue.. For commands like [db]., listing., and consult('db.pl') to work, you need to start gprolog in the terminal in the same directory that you have saved your knowledge base. Otherwise, you will get an uncaught exception.
Paul Cunningham Thanks for taking the time to help others :)
I read the thumbnail as "How to prolong one video"
:/
That's funny :)
THIS IS FIRST VIDEO WHICH I FOUND USEFUL FOR ME... AFTER USING UA-cam ALMOST 8 YEARS
I'm happy I could help :)
in 20:35 where you modified the get_grandparents function, it actually became the get_parents function. You forgot to change the string and name to match that.
True, I was gonna comment just that.
hey dude. this is awesome. i'm not going to say "subbed" or anything, rather i'm going to watch every single video you got.
one thing you forgot was the environment variables. i already know how to do it, so i was lucky, but i remember a time when i didn't and it took forever and lots of frustration to figure it out.
thank you so much for the video! you do really well
18:03 So... Alice and bob are siblings, and the parent of carl...?
Welzi1234567890 sweet home alabama
Yes, incest is common in prolog
@@norcal6181 lmao.
Wow that is honestly fantastic. I have looked at tons of tutorials and not one of them actually showed me how to write my first one-line program. Thank you so much - gottit !
Thank you very much Happy I could help :)
produce_milk(penguin).
yes
Ok.
That's funny 😁
My Prof was "good" with explaining FOPL, but i didnt understand a thing about Prolog. Thank you for this video
I'm happy I could help :)
why not swi-prolog on Windows?
well not in my zone.
The last dev that I saw using Linux formated his own hdd by mistake while he was trying to format an external hdd on terminal :B
And the mac ones, ehm, I Always see them Always using dual boot :S
...
And idk why did I made that question rofl, swi-prolog is bad everywhere
Simply the best Prolog tutorial. This is much much better than my intro Prolog university subject!
Worst language in the world. But very helpful for that one class you hate.
It is quite odd I agree
You seem to know it quite well though! What is the main purpose of this language? Would you be able to answer that for me? Also thanks again for the video, got me through my homework!
It's meant to be used for artificial intelligence to help store information and help robots make decisions. Other than AI though it's basically useless lol
I am trying to learn PROLOG to use on constraint logic programs (CLP) in a staff scheduling context, namely to find efficient staff schedules for 24-hour operations given a set number of people and a set budget of available time per person. No robots are involved :-)
I still have a long way to go. List creation through recursion warps my mind and declarative predicate programming is still a new concept to me.
I really like prolog but example code always shows crappy family trees etc.
12 hours of lecture condensed to ~63.5 minutes. Thanks, as always, for doing what you do my guy.
Now to ponder the life choices of going tens of thousands of dollars into debt and licking tenured boots for 4-5 years to gain knowledge I could've learned in 6 months with youtube...
Thank you :) Happy I could help. I have pondered what universities will become. My mother is a college professor by the way. I think 90% of the value of going to college is found in the networking. If done right that is extremely valuable. Of course there are a few amazing professors that can change a persons life, but they are few and far between. That is why I consider the current zoom college experience to be basically worthless.
@@derekbanas preach
Dude this is what we call teaching skills! A perfect tutorial! Thanks a lot!
Thank you very much :)
Better than college! Thank you!
Thank you :)
You are helping me a lot! I came back to tell you that in 4 days,with your starting tips on this video i learned much more than i did in half a semester . My skill got from 10% to 90% because i finally understood how Prolog works and i aced the exam.Now i`m working on creating a MySql database project with help from your videos later on watching your Haskell tutorial and who knows what goodies i`m going to find next! I`m reccomending you to my coleagues so they can catch up the things that college unfortunately didn`t manage to teach us ! God knows why.
Derek, Oh man... always there when I need a good old tutorial.
Kudos for you!
Thank you :) I'm happy I can help
Thank you for another video! :D I'm learning so much about different languages with them!
By the way, What about Unity? :P
Stay awesome, thanks! :D
SebasCapo You're very welcome :) I can't wait to start making games. I'll do it for the rest of the year after I finish the languages.
Derek Banas Looks cool! :D I'l be waiting for them!
Keep awesome, cya!
25:52 That's where I say Prolog is not for me, because data and compute are jumbled together, which they shouldn't be, if only because of AI, data analytics and specialised IT jobs. Also, Prolog tries to represent data in terms of predicate logic, which is odd. Nowadays we have graph databases which are clearly separated from the programs that use them. For me, Prolog is only interesting for historical reasons, because it dates from an early period where software wasn't yet a separate thing from the math/logic realm that gave it birth.
Did you cover how to do what you did @ 4:43 because I don't understand completely what that is.
Mistake at approx 59:18, after you enter "List1 = [a,b,c]." (note the period) and then queried "?- member(a, List1)". The results are not as expected and you didn't notice this. In fact, List1 is out of scope. I found, if you use a variable, you must put a comma after List1 = [a,b,c], in order to refer to the variable.
@4:34 how do you open that folder
I don't think count_down at 51:00 is doing what you'd want it to do. It works for if your lowest is 0, but not when it's anything else.
I think it should be:
count_down(Low, High) :-
X is High - Low,
between(0,X, Y),
Z is High - Y,
write(Z), nl.
to work with any range given.
penguins doesnt produce milk,that stuff its not really milk :P great basic tutorial tho, thanks a lot! All other info on control logic programing looks like written in soviet russia
That's funny :) I'm glad you liked it
Totally right, I almost never read _learning_ textbooks on anything written by russian scientists - they can't write tutorials in principle, but dump their brain knowledge porridge onto paper, so you must already know a lot to read that mind flow.
This got me darn confused...
rule at 50:33 is faulty it does not work if the Low is anything other than 0, if you give the query count_down(7,13). it provides answer as 6,5.....0.
Sorry if I made a mistake
Where was this when I took my AI class last semester!
Matt Ng Sorry it took so long :)
this video could really benefit from timestamps, its well organized!
Installation problem:
I'm checking if cygwin was properly installed. At the terminal, when typing " g++ hellowoworld.cpp -o helloworld", I receive the message "-bash: g++: command not found".
I also noticed that I only have the helloworld.h file (after creating it with notepad++). How do I get the .cpp file that?
Thanks for the video!
also, when checking the "Devel" items to download, I couldn't find these options shown in the video. I'm not sure it it's related to the problems I'm having at the installation.
Same thing is happening for me. Did you find the solution for this?
So, here is what I noticed: the options inside "Devel" that are being worked with are usually minimized. Try finding them by checking the code number or names, that worked for me. But I ran into another problem after installation, so I'm learning C++ using Microsoft Visual Studio instead, and other video tutorials
At 51:15 i think the code for count down and count up is wrong, they only work when Low is 0.
I think these work universally, please let me know if I'm wrong
count_up(Low, High):- between(Low, High, Z), write(Z), nl.
count_down(Low, High):- between(Low, High, Y), Z is Low+High-Y, write(Z), nl.
Wow, great tutorial! Thanks!
Thank you :)
i came here from java tutorials search
i watched your prolog tutorials when i had to take that course in university
its really a fun language because you have to really think different than most other languages but in the end its pure logic
thats why its called pro(gramming in )log(ic)
I agree Prolog is even a great language to learn if you just want to get better at programming in other languages
Will you cover iOS development any time soon, with objective-c or perhaps even with swift?
Alberts Klavins he already has a series on swift and object c , check out his channel :)
Alberts Klavins I'll see what I can do.
Derek Banas That would actually be great because i am new to iOS development and through you i actually learned basics in Android Development and I am grateful about that. So keep your work and thank you for your awesome videos. :)
Thank you so much for this tutorial. I was having trouble with my homework and this helped clear up concepts for me.
I'm very happy it helped :)
CAN YOU PLEEEEASE DO ASSEMBLY. please????
How to's for blender I'm working on it as well as a tutorial on electronics.
35:29 Penguins don't produce milk... they're BIRDS
42:10
succ
Good succ....
1:03:06
I had to attend lab tutorials in my college for the whole semester but not learning anything. Here, it takes me 10 minutes for everything to start making sense.
That's awesome! I'm very happy that it helped :)
404 views. Cannot find page
FireWolfVids lmao
its 404 error i think not 404 view
Asad Waqqas
you missed the joke a year ago when this had 404 views
ok
If only professors all over the world were as dedicated as you and many other youtubers who explain things in great detail.....
In sam cooke’s voice: “what a wonderful world this would be”
Thank you for the nice compliment :)
How many proggramming languages do u know?
+Rohan Arcot I have used pretty much everything over my 30 years of programming
+Derek Banas do you know how to install XPCE ?
+Derek Banas is the Zeus of programming! :p
+Derek Banas lol i thought you were 25-30 years old
How do you remember it all! I keep confusing the syntax between the 2 languages I know!
Derek, you are an amazing man! I've just founded your channel, and now there are tons of videos to watch for me and learn them all. Apprecieta that man!
Thank you very much :) I hope you enjoy them
I never even heard of this language...
Its taught in university for AI apparently.
MrQwerty2524 It is pretty cool. Check this out Building Expert Systems with Prolog www.inf.fu-berlin.de/lehre/SS09/KI/folien/merritt.pdf
Derek Banas could you mind about assembly lang tutorial?
Nikodem Pierzak Sure, but I want to cover electronics first.
Great!
When i read the course books that cover this topic, it feels like they are written by an abstract artist who is a little too much into wordplay and overly complicated language. Thanks for putting the topic in simple words man. Nothing is fuzzy anymore.
Thank you that is the compliment I was most hoping for. I agree prolog books are terrible.
who's here for csc324?
it's definitely not an imperative language, gotta wrap up my head around declarative and functional, I like it but ti's all new to me, thx from 5 years in the future
You taught this so well and concisely. thank you very much, helped me out a lot
Exactly what I was searching for: clear and brief intro to understand Prolog throught examples. Thanks.
Thank you :) I'm glad it helped
It is much simpler to think that predicate(X,atom, another). defines N-ary _relation_ between variable X and two atoms. In that model we can represent classical table of RDBMS as aa lot of tablename(fielda,fieldb,...) with same name and arity
But every time I'm facing with a list my brain is melting.
Thanks a lot man, really appreciate this tutorial, still a long way to go but a little hopeful now!
I have a final in a few days on Prolog and Haskell, your videos on them are such a great review, thanks!
I'm very happy I could help :) Best of luck on your finals.
Dude, amazing tuto! I love it! Thank you Derek! From an Argentinian guy!
You've helped me a lot.
Thank you:) I'm very happy that it helped
brother(A,B) :- parent(C,A),parent(C,B). it gives the result of bob -> brother of bob , possibly because alice is also parent of bob . so i suppose you must add more parameters like wife and husbund or mother and father :)
Got a Prolog final this coming Monday. This is better than the last 6 weeks of class. Thank you! #lifesaver
Thank you :) Best of luck on your final
Certainly, the best prolog tutorial by far.
Thank you very much :)
21:44 the sematics of grand_parent v.s. parent is reveresed. grand_parent(a,b) b is a's grand parent; but parent(a,b) a is b's parent.
Thank You Mr Derek I Don't understand why people dislike you're videos
what is the best way to learn programming
imad krimo You're very welcome :) It is ok. Some people don't like fast videos which is what I specialize in.
Note to anyone watching: the count_down and count_up definition written in this video only work if you use the low value of 0. Otherwise the practice of doing 'High - x' and 'Y - Low' will not start and end where you expected them to. The count down/up will be offset by your min value.
+Austin Nicholas Thanks for taking the time to help :)
+Derek Banas Thanks for helping me study for my final exam. Aced it like a champ!