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).
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.
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.
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 :,)
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.
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 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
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!!!!
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.
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.
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
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 ].
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"]).
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.
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.
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 !
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.
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!
+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!
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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.
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 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.
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.
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 normally just go read the API's, but someone recommended this video. Absolutely worth it. It was almost as good as sitting next to you for an explanation of the language.
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”
At 22:13, shouldn't the grand_parent rule be as follows: grand_parent(X, Y) :- parent(Z, Y), parent(X, Z). (I am assuming grand_parent(X,Y) is read as X is the grand_parent of Y).
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
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.
The implementations of count_up and count_down are wrong. Correct implementations: count_down(Low,High):- between(Low,High,Y), Z is High - (Y - Low), write(Z),nl. count_up(Low,High):- between(Low,High,Y), write(Y), nl.
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.
This video is great! I'm a complete noob when it comes to coding and I've always wanted to give it a shot, the intro to this has been a breeze for me however I'm having an issue creating the hello world file, I got Cygwin installed perfectly fine as well as gprolog and my total lack of knowledge in this field has left me puzzled. One thing I have noticed is every time I try and access the database in gprolog I get an error (as far as the nature of the error I don't recall), I am running this on Windows 10 so that probably has something to do with it. Keep up the good work!
I guess the biggest issue I am having at the moment is I'm not able to load anything in my database through GNU, like I stated previously I am extremely new to this. The error listing is uncaught exception: error(existence_error(source_sink,'db.pl'),consult/1).I am also unsure if the program I am using for my database is compatible or not. I am currently using Visual Studio Code.
I believe there's something wrong with the code at 51:40 where you're doing the rule "count_up". Starting from any number other than 0 as the "Low" variable will result in unwanted results. On line 15 it should be "Z is Y" which is obviously redundant, and instead you can do write(Z) for line 16 and remove line 15 all together.
the rule at 21:32 is incorrect as grand_parent(X,Y) means X is grand parent of Y, but in query you are providing grand_parent(carl, A) which would mean Carl is grand parent of A and that's not correct.
Learn in One Videos for Every Programming Language
Subscribe to Bookmark them: bit.ly/2FWQZTx
C++ : ruclips.net/video/Rub-JsjMhWY/видео.html
Python : ruclips.net/video/N4mEzFDjqtA/видео.html
Java : ruclips.net/video/n-xAqcBCws4/видео.html
PHP : ruclips.net/video/7TF00hJI78Y/видео.html
MySQL : ruclips.net/video/yPu6qV5byu4/видео.html
JavaScript : ruclips.net/video/fju9ii8YsGs/видео.html
C# : ruclips.net/video/lisiwUZJXqQ/видео.html
HTML5 : ruclips.net/video/kDyJN7qQETA/видео.html
CSS3 : ruclips.net/video/CUxH_rWSI1k/видео.html
JQuery : ruclips.net/video/BWXggB-T1jQ/видео.html
TypeScript : ruclips.net/video/-PR_XqW9JJU/видео.html
ECMAScript : ruclips.net/video/Jakoi0G8lBg/видео.html
Swift : ruclips.net/video/dKaojOZ-az8/видео.html
R : ruclips.net/video/s3FozVfd7q4/видео.html
Haskell : ruclips.net/video/02_H3LjqMr8/видео.html
Handlebars : ruclips.net/video/4HuAnM6b2d8/видео.html
Bootstrap : ruclips.net/video/gqOEoUR5RHg/видео.html
Rust : ruclips.net/video/U1EFgCNLDB8/видео.html
Matlab : ruclips.net/video/NSSTkkKRabI/видео.html
Arduino : ruclips.net/video/QO_Jlz1qpDw/видео.html
Crystal : ruclips.net/video/DxFP-Wjqtsc/видео.html
Emacs : ruclips.net/video/Iagbv974GlQ/видео.html
Clojure : ruclips.net/video/ciGyHkDuPAE/видео.html
Shell : ruclips.net/video/hwrnmQumtPw/видео.html
Perl : ruclips.net/video/WEghIXs8F6c/видео.html
Perl6 : ruclips.net/video/l0zPwhgWTgM/видео.html
Elixir : ruclips.net/video/pBNOavRoNL0/видео.html
D : ruclips.net/video/rwZFTnf9bDU/видео.html
Fortran : ruclips.net/video/__2UgFNYgf8/видео.html
LaTeX : ruclips.net/video/VhmkLrOjLsw/видео.html
F# : ruclips.net/video/c7eNDJN758U/видео.html
Kotlin : ruclips.net/video/H_oGi8uuDpA/видео.html
Erlang : ruclips.net/video/IEhwc2q1zG4/видео.html
Groovy : ruclips.net/video/B98jc8hdu9g/видео.html
Scala : ruclips.net/video/DzFt0YkZo8M/видео.html
Lua : ruclips.net/video/iMacxZQMPXs/видео.html
Ruby : ruclips.net/video/Dji9ALCgfpM/видео.html
Go : ruclips.net/video/CF9S4QZuV30/видео.html
Objective C : ruclips.net/video/5esQqZIJ83g/видео.html
Prolog : ruclips.net/video/SykxWpFwMGs/видео.html
LISP : ruclips.net/video/ymSq4wHrqyU/видео.html
Express : ruclips.net/video/xDCKcNBFsuI/видео.html
Jade : ruclips.net/video/l5AXcXAP4r8/видео.html
Sass : ruclips.net/video/wz3kElLbEHE/видео.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).
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
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.
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...
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 :)
5:30 Tutorial starts (To skip installation process)
He has that (and lots of other timestamps) in the video description.
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.
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 :,)
Thanks for making this video, the first 45 mins for enough to cover all the topics that we covered in one semester
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.
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
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 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 :)
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 :)
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.
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.
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
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 ].
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"]).
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
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.
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 :)
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.
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
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
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]).
Dude this is what we call teaching skills! A perfect tutorial! Thanks a lot!
Thank you very much :)
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.
Derek, Oh man... always there when I need a good old tutorial.
Kudos for you!
Thank you :) I'm happy I can help
Good intro.
p.s. count_up and count_down seem wrong, only work well if Low is 0.
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.
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
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
Great lecture. Wish there was more on lists as it relates to recursion.
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.
His voice sounds so mechanical, nice tutorial as well!
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".
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.
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.
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.
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 read the thumbnail as "How to prolong one video"
:/
That's funny :)
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.
Дякую! Срані держіспити, це лайно вчити!
Like якщо з 3го курсу могиляночки
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
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.
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.
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!
Excellent video man! You 've summed up half a term's material in one hour. Love yah!
+Χρίστος Χατζηνικολή Thank you :) I'm happy I could help.
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
THIS IS FIRST VIDEO WHICH I FOUND USEFUL FOR ME... AFTER USING RUclips ALMOST 8 YEARS
I'm happy I could help :)
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.
Thanks for not using the biased Intel C++ compiler that cripples performance for non Intel CPU's.
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.
Certainly, the best prolog tutorial by far.
Thank you very much :)
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!
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...
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
Where was this when I took my AI class last semester!
Matt Ng Sorry it took so long :)
9 years saving people, yesterday just saved another one thanks!
Did you cover how to do what you did @ 4:43 because I don't understand completely what that is.
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 :)
@4:34 how do you open that folder
Thank you for taking your time to make this video. this was the perfect video to refresh what I had learnt a few years ago!
You're very welcome :) I'm happy it helped
produce_milk(penguin).
yes
Ok.
That's funny 😁
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.
Wow, great tutorial! Thanks!
Thank you :)
Exactly what I was searching for: clear and brief intro to understand Prolog throught examples. Thanks.
Thank you :) I'm glad it helped
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. :)
I normally just go read the API's, but someone recommended this video. Absolutely worth it. It was almost as good as sitting next to you for an explanation of the language.
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!
very helpful, i learned more in this video than the whole month of college course. Keep it up!
Thank you :) I'm happy it helped
42:10
succ
Good succ....
1:03:06
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
CAN YOU PLEEEEASE DO ASSEMBLY. please????
How to's for blender I'm working on it as well as a tutorial on electronics.
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 :)
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!
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.
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
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 :)
who's here for csc324?
you are the best Derek, huge respect
Thank you very much :)
At 22:13, shouldn't the grand_parent rule be as follows:
grand_parent(X, Y) :- parent(Z, Y), parent(X, Z).
(I am assuming grand_parent(X,Y) is read as X is the grand_parent of Y).
thought the same
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 :)
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
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.
The implementations of count_up and count_down are wrong.
Correct implementations:
count_down(Low,High):-
between(Low,High,Y),
Z is High - (Y - Low),
write(Z),nl.
count_up(Low,High):-
between(Low,High,Y),
write(Y), nl.
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.
This video is great! I'm a complete noob when it comes to coding and I've always wanted to give it a shot, the intro to this has been a breeze for me however I'm having an issue creating the hello world file, I got Cygwin installed perfectly fine as well as gprolog and my total lack of knowledge in this field has left me puzzled. One thing I have noticed is every time I try and access the database in gprolog I get an error (as far as the nature of the error I don't recall), I am running this on Windows 10 so that probably has something to do with it. Keep up the good work!
I'm glad it helped :) What errors are you getting?
I guess the biggest issue I am having at the moment is I'm not able to load anything in my database through GNU, like I stated previously I am extremely new to this. The error listing is uncaught exception: error(existence_error(source_sink,'db.pl'),consult/1).I am also unsure if the program I am using for my database is compatible or not. I am currently using Visual Studio Code.
I needed no more for my course prolog lecture, This video really rocks!
Thank you :) I'm glad it helped
I believe there's something wrong with the code at 51:40 where you're doing the rule "count_up". Starting from any number other than 0 as the "Low" variable will result in unwanted results.
On line 15 it should be "Z is Y" which is obviously redundant, and instead you can do write(Z) for line 16 and remove line 15 all together.
+Kevin C Thank you for pointing that out :) I'll take a look
You just saved my entire module, god bless
the rule at 21:32 is incorrect as grand_parent(X,Y) means X is grand parent of Y, but in query you are providing grand_parent(carl, A) which would mean Carl is grand parent of A and that's not correct.
Sorry for the error
35:29 Penguins don't produce milk... they're BIRDS