Re: [fpc-pascal] Working on a new way to educate people about pascal
On 12/28/22 06:01, Hairy Pixels via fpc-pascal wrote: On Dec 28, 2022, at 4:45 PM, wkitty42--- via fpc-pascal wrote: like james, i also have like 40-45 years programming experience... 99% of my stuff is still text mode tools and apps... GUI stuff has just never made sense to me... Just curious, how so? GUI is usually the easiest parts of programming but these days using Pascal there aren’t many options. Should be easy to pick up some tutorials even if it’s another language with a good framework for what ever platform you use. If you have a top-down view then GUIs have the illusion of being easy, because you are blissfully ignorant of their complexity. With that blissful ignorance one is forced to master event based programming model, which among other things in GUI programming is a fairly advanced topic. If you have a bottom-up view, then you understand that GUIs are extremely complex. They are anything but "simple". If you understand interrupts and real time embedded systems, then you will grasp event-based base programming with a far deeper understand then the beginner programmer. I've done a lot of GUI work in the distant past and web-ui work in the not so distant past, but before that learned bottom up. Web-UI's are far from being simple, they are even more complex than a native GUI app, and are an even higher layer on top of even more complex software. To write good Web-UIs, once again, among other things, event-based programming... So starting out with GUIs and Web-UIs beginners is forcing them deal with very advanced concepts right away. Yes, there is the visual appeal, but it is an illusion in my opinion. Like wkitty42, I've been programming for a while, only 30 to 35 years though, since the mid 80s, more so since the early 90s. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
“James, when you raised these questions are you saying that you don't know, or that someone who doesn't know much if anything about programming doesn't know” The point I was trying to make is that most of this is gobbely gook to me. So I went looking for something I could recognize.. and I saw a reference to a timer, but the only thing we know about it from the article is that there is a timer and it needs to get closed, and that TSqlForm.CloseTimerTimer closes it, and that is IT. We don’t know how it got started, how much time it was for, why it needs to close, or why in fact there is a timer at all… the reason I brought up the timer is because it was the only thing I could really see that an average person would recognize as maybe being useful in their own lives. Anyone who could understand what SQL was from the link you provided or understand what the program is even supposed to do, really doesn’t need an introduction to Pascal. I’m not trying to say that the idea itself is bad, in fact I do like the way you have links that show specific lines to help with the explanation. I’m just saying, the sample program needs to be on a MUCH simpler subject.. something that an average person who is not a computer scientist can understand. A subject that a middle school student could understand and see the value of. I went way beyond what your potential readers would ever do, and went to Wikipedia to see what SQL was and I even tried to follow some of the code and unfortunately I just couldn’t follow any of it at all. It seems to be just pieces of programs but the reader can’t understand how they relate to each other or how it all works.. it’s too complicated. It really needs to be just a single program that starts with does something understandable, that the reader could easily copy and paste and play with and understand, not a bunch a pieces of code that the reader can’t figure out how these separate pieces relate to each other. That is why Michael mentioned having a Pas2js compiler on the page.. it would allow the user to play with the code right there.. but this is impossible with your SQL monitor because on a web page there would be no server to monitor, and even if they wanted to try this themselves, the would have to learn all about SQL to even get started, and that’s never going to happen. So the only interest you will get at all are people who already have some SQL thingie that want to monitor it… but even so, they don’t have enough information to duplicate your program.. if they cut every bit of code from your page, they would not know where or how to paste it to make a functional program. With such a complicated subject, even someone willing to try to figure it out what SQL is and why you need to monitor it, will click the link to ”Entity Framework” and go Woah what is all this?? They going to think “All this Free Pascal stuff is really super advanced and beyond anything I could have a use for” and while it is true that Free Pascal is VERY advanced and has a LOT of ways to accomplish very complicated tasks fairly easily, it also does not HAVE to be complicated at all. In fact you are missing one of the key fundamental philosophies of the Pascal programming language, which is that “Programs should be easily understandable by humans” The image of “The SQL Monitor Example Program” doesn’t mean anything to the average person, and it does not mean anything to me as an experienced programmer.. it’s just a bunch of gibberish that seems to accomplish nothing. I don’t know why I would ever want to monitor that stuff and I’m afraid you are going to lose your entire audience because the subject is just too complex, unless the reader can understand what the program specifically does and how it does it, they aren’t going to be interested. If instead you had an example of a program that everyone could relate to and maybe even use themselves you will capture a lot more interest, and if the example is relatively simple and easy to follow, with variables that have no abbreviations so it’s as readable as possible, and well commented to make sure that everything is clear, then you might get someone to actually download Free Pascal and start typing some code, and it seems to me that would be the goal of such an introduction. That’s why I mentioned the timer.. hey a cool program that you set an amount of time, then it counts down and maybe makes a sound when it’s done.. well everyone that has ever boiled and egg could see why you would want to do that. Then they could see.. this program has a timer, this is how I set the amount of time, this is how I start it, this is what happens when it’s done, this is what displays the time left, etc… it serves a purpose they can understand and they can follow exactly what is happening and understand the end result. James ___ fpc-pascal mail
Re: [fpc-pascal] Working on a new way to educate people about pascal
I’ve found firebase to be one of the easiest databases to wrap my mind around. https://firebase.google.com https://blogs.embarcadero.com/quick-and-easy-way-to-integrate-firebase-into-your-delphi-apps/ Thomas Young Sent from my iPhone > On Dec 29, 2022, at 12:16 AM, Anthony Walter via fpc-pascal > wrote: > > > I think most people can quickly figure out that SQL is a programming language > that is used to manage data stored in relational databases. It is a > relatively easy language to learn and use, especially for people with a basic > understanding of programming concepts. It's a widely-used language in the > field of data management and is based on simple, English-like commands. SQL > uses a straightforward syntax that is easy to understand and learn. Many > people find it to be a user-friendly language, and it is often used as an > introduction to programming for people who are new to the field. It shouldn't > be confusing to anyone who has been programming for decades. > > The line of code you provided is a SELECT statement that retrieves all rows > (indicated by the * symbol) from a table called "Customers." The statement > also includes a WHERE clause, which specifies a condition that must be met in > order for the rows to be included in the results. In this case, the condition > is that the value in the "Country" column must be equal to 'USA'. Therefore, > this line of code would retrieve all rows from the "Customers" table where > the value in the "Country" column is 'USA'. The results of this SELECT > statement would include all of the columns from the "Customers" table for > each row that meets the specified condition. > > I agree, deciphering your statement ought to be quite clear to anyone with > even a passing curiosity, which is why I was unsure earlier how anyone on > this mailing list was confused by SQL. > ___ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
On 29/12/2022 05:15, Anthony Walter via fpc-pascal wrote: I think most people can quickly figure out that SQL is a programming language that is used to manage data stored in relational databases. It is a relatively easy language to learn and use, especially for people with a basic understanding of programming concepts. It's a widely-used language in the field of data management and is based on simple, English-like commands. SQL uses a straightforward syntax that is easy to understand and learn. Many people find it to be a user-friendly language, and it is often used as an introduction to programming for people who are new to the field. It shouldn't be confusing to anyone who has been programming for decades. Well, I understand it was originally called SEQL, E for English, but they dropped that because it wasn't English-like. While the access language for one variant of the MultiValue databases I use was called "English", precisely because it was very English-like. The line of code you provided is a SELECT statement that retrieves all rows (indicated by the * symbol) from a table called "Customers." The statement also includes a WHERE clause, which specifies a condition that must be met in order for the rows to be included in the results. In this case, the condition is that the value in the "Country" column must be equal to 'USA'. Therefore, this line of code would retrieve all rows from the "Customers" table where the value in the "Country" column is 'USA'. The results of this SELECT statement would include all of the columns from the "Customers" table for each row that meets the specified condition. Not my line, but it rapidly gets worse from there. What if you want the country name ... SELECT CUSTOMERS.*, COUNTRY_NAME FROM CUSTOMERS JOIN COUNTRY_CODES ON CUSTOMERS.COUNTY_CODE = COUNTRY_CODES.COUNTRY_CODE I agree, deciphering your statement ought to be quite clear to anyone with even a passing curiosity, which is why I was unsure earlier how anyone on this mailing list was confused by SQL. I'm a database guy with maybe 30 years experience, I'm new to SQL and oh my god is it an over-complicated monster ... LIST CUSTOMERS CUSTOMER_NAME COUNTRY_CODE and (for the user) it doesn't get any more complicated than that, they just need to know the name of the field they want. Everything is defined in the *table* (or rather, its equivalent) so the programmer only has one place to look, not a mix of tables and views, and you can actually hard-code the equivalent of a join into the table. SO much simpler, all round ... I like to describe multi-value as a hierarchical object-relational database. Cheers, Anthony Walter Youngman (aka Wol :-) ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
>It shouldn't be confusing to anyone who has been programming for decades. It is very confusing if you never had a need for any kind of database.. which I do not…. And neither do many other programmers. Databases are only a very small part of what people use computers for, and only a very small part of people who use Databases use SQL... it's a VERY Specific topic. I do motion control and industrial machinery automation. I get into very timing critical applications with heavy calculations and digital communications with various electronic devices, and graphical display of the processes involved in various manufacturing processes. Absolutely nothing I have done in my entire career has required any kind of database whatsoever. I think I did some database stuff in COBOL in high school… and it didn’t use SQL.Without having a need for a database, my high school exposure to databases is all the education I have ever had on them… they are simply not anything I actually use or care about… so when I look at your SQL Monitor screen shot, "Where not (exists (Select1 bla bla bla.. well that's not something I recognize or understand the usefulness of.. it's another language on it's own and has nothing to do with anything I would ever use a computer for. You are completely missing the point.. which is, if your target audience is: “anyone who either isn't familiar with writing computer software or perhaps is not acquainted with Free Pascal.” Then you are introducing Free Pascal using an advanced topic that none of your audience will understand or appreciate, because if they aren’t “familiar with writing computer software” then they defiantly will have no idea what you are talking about.. and they, like myself, can’t relate to it. If people can’t make a connection with the subject, they are don’t even going to finish reading your article, and are defiantly not going to be inspired to download Free Pascal and try to write some code. For a sample program, you really need a simple subject that is interesting to any random person, and easy to understand code that is easily duplicatable. So if the reader finds value in what you have presented, and they are inspired to give it a try, which is the goal of your introduction, then they need sample code they can literally cut and paste into the Free Pascal IDE and run it for themselves, then they can see how it works, follow along, and customize it, and from there… who knows. But in your example, they would already have to have some kind of SQL database up and running to have a need for such a thing or to understand anything at all about the sample application.. it just doesn’t apply at all to most of your target audience. If your intention was: "This short program guide is designed as an introduction to the Free Pascal programming language for any SQL users who are not acquainted with Free Pascal." Then the subject is more relevant to your now much smaller target audience, but it still lacks the ability of the reader to make their own SQL monitor with the information presented on your page.. because you have snippets of code.. they can copy and paste them.. but how? Where? How do you combine these snippets of code into a functional program? It’s not obvious based on the information provided where these code blocks go, and how do they combine to make a complete working application? If the reader can’t easily duplicate your sample program and follow along and run it on their own computer, how are they going to be inspired to go further? And if you really want to reach your target audience, of “anyone who either isn't familiar with writing computer software” then even if you gave them a download for all the source files and an executable with an installer… they still can’t run it and make it work on their own computer because they would have to also install SQL, and set it all up to have something to monitor.. so now they need to learn 2 new systems, SQL and Free Pascal.. or 3 if we want to count Lazarus, which is entirely different than just Free Pascal on its own. To be an effective writer, you need to forget everything you know, and consider who the typical reader is and put yourself in their place and then evaluate what you are trying to accomplish form the READER's point of view.If you showed this to 100 random people, how many of them would make any kind of a connection to it? How many would say, I can see the value in this, maybe I should give it a try? How many people that fall into the “anyone who either isn't familiar with writing computer software" category are going to have a clue what you are talking about?The point I was trying to make is that even with my background in programming, I don't know what you are talking about... at all, not even after your explanations... because I can't connect to the subject in even the slightest way, the only database I ever use is the one
Re: [fpc-pascal] Working on a new way to educate people about pascal
On Thu, 29 Dec 2022, James Richters via fpc-pascal wrote: It shouldn't be confusing to anyone who has been programming for decades. To be an effective writer, you need to forget everything you know, and consider who the typical reader is and put yourself in their place and then evaluate what you are trying to accomplish form the READER's point of view. This is exactly why I stopped writing the Pascal tutorial that I started, many years ago. Even for the many articles which I've written over the years, often the editor or other proofreaders had to point out to me I'm using concepts that are not known to everyone. And that's for an audience of programmers. I also had to learn that there are programmers that have not seen a single SQL statement in their life :) It is not easy, writing material for beginners. As James writes, you must "forget" all that you know... Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
@youngman "I'm a database guy with maybe 30 years experience, I'm new to SQL and oh my god is it an over-complicated monster ..." Wait, what? Something doesn't make sense with what you said. You have 30 years of experience writing database programming code AND you are just now beginning to learn about SQL? Also, it helps a whole lot when writing SQL if you format your statements: select c.*, cc.country_name from customers c join country_codes cc on cc.country_code = c.country_code; Formatting code really helps legibility, especially when it comes to SQL. That ought to be one of the first things you learn. @richters Again, you are someone replying with another confusing response. You say you have little to no experience with databases, then assert: "and only a very small part of people who use Databases use SQL" Assuming people in that sentence, you are referring to people who use write programs or scripts which make use of databases, if you know very little about the subject of databases on that subject, how can you justify this assertion? Moreover, I am unsure why I might heed your advice with regard to effective writing. Looking back at the messages, your grammar, formatting, and sentence structure belie someone with little formal education on the subject. Quote: "Then maybe a simple form.but threads and sockets... ok.. well I know what threads and sockets are because I happened to use them... but to a newbie... YIKES what are those?? and SQL??? What the heck is that anyway? I'm not talking about a newbie.. I mean.. myself... with over 40 years of programming experience, mostly with Pascal, What the heck is it and why would I need to monitor it?" Your first sentence has no verb. Your profuse usage of strings of punctuation is both non-standard and inconsistent. It's difficult to tell whether you meant to have a pause, where a comma would be appropriate, or whether an idea has ended and a single period should be used. Grammar is important to writing effectively for a number of reasons. First and foremost, grammar is the set of rules that govern the way words are used in a language. It helps to ensure that people can communicate effectively and understand each other. Without a common set of grammatical rules, it would be much harder for people to convey their thoughts and ideas clearly and for others to understand them. I would hope a programmer with 40 years of experience would recognize this. Good grammar is essential for written communication, whether it's a business letter, a school essay, or an email to a friend. Poor grammar can make writing difficult to understand and can convey a lack of attention to detail or professionalism. Finally, grammar is important for language learning. Learning grammar helps language learners understand how the language works and how to use it correctly. It can also help them understand the structure of sentences and how to build them, which is important for speaking and writing in the language. I suggest you either brush up on these subjects or refrain from scolding people on subjects with which you have no practical experience. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
On 29 December 2022 13:31:57 +0100, Anthony Walter via fpc-pascal wrote: Hello Anthony, . . >I suggest you either brush up on these subjects or refrain from scolding >people on subjects with which you have no practical experience. You asked for feedback and you got it. Please, stop attacking others who provided what you'd asked for. Obviously, it's up to you whether you consider the feedback, or not, or whether you agree to it, or not, but arguing this way makes no sense and doesn't belong here for sure, because it isn't related to either FPC or Pascal. Tomas (one of FPC mailing lists moderators) ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
On 29/12/2022 13:34, Tomas Hajny via fpc-pascal wrote: On 29 December 2022 13:31:57 +0100, Anthony Walter via fpc-pascal wrote: Hello Anthony, . . I suggest you either brush up on these subjects or refrain from scolding people on subjects with which you have no practical experience. You asked for feedback and you got it. Please, stop attacking others who provided what you'd asked for. Obviously, it's up to you whether you consider the feedback, or not, or whether you agree to it, or not, but arguing this way makes no sense and doesn't belong here for sure, because it isn't related to either FPC or Pascal. Tomas (one of FPC mailing lists moderators) Apologies for throwing my two-pennorth in as well, but PLEASE QUOTE WHAT YOU'RE REPLYING TO. List netiquette is important, please look at what others are doing, and do likewise. Otherwise it gets very difficult to follow what is going on. Cheers, Wol ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
Well, this discussion has not gone well at all! I suggest that everyone relax and discontinue pursuing it. The response has been made that the example code in the tutorial is more complicated than it should be. Digressions on SQL and databases are not relevant. Nor are comments on grammar. Let it be. Doug C.___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
>Well, this discussion has not gone well at all! I agree >I suggest that everyone relax and discontinue pursuing it. I apologize to Anthony and everyone on the list for getting too carried away. James ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
@wols "Apologies for throwing my two-pennorth in as well, but PLEASE QUOTE WHAT YOU'RE REPLYING TO." I am unsure if you are replying to me, but believe I did use quotes along with the names. @richters "I apologize to Anthony and everyone on the list for getting too carried away." There is no need to apologize. With respect, there was no harm taken. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
On 12/29/22 6:40 AM, Michael Van Canneyt via fpc-pascal wrote: I also had to learn that there are programmers that have not seen a single SQL statement in their life :) i remember working on an inventory program using FoxBase from before m$ acquired it... i laid out the databases (now called tables) and drew the screens (now called forms) with the fields for all the information about the inventory item... i wrote report code the client requested so they could manage their inventory... imagine my surprise when i was in one day for some updates and one of the girls showed me some reports i had never seen or heard about... turned out they were doing basic SQL queries for these reports to get "views" of the data that wasn't available in the specific reports i had been tasked to write... things were headed into a more "freeform" format... they basically needed databases with specific information that they could draw information from... it was a huge mindset change... almost like having grown up doing pascal and asm and then trying to figure out LISP on your own in the same way you taught yourself pascal and asm... -- NOTE: No off-list assistance is given without prior approval. *Please keep mailing list traffic on the list where it belongs!* ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
Am Donnerstag, 29. Dezember 2022, 15:02:41 CET schrieb DougC via fpc-pascal: > The response has been made that the example code in the tutorial is more > complicated than it should be. The installation process (in my case Linux) should be easy as well. For beginners that is at least as important as a good example. My experience is that this is often a problem in Linux. I use debian. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
Anthony Walter via fpc-pascal wrote: Hi guys, I had a new idea for an interface design to help people who either are not into programming yet or have only used a language other than Free Pascal. Please see this draft Introduction to Free Pascal web page I posted this morning. Well, I still remember the glorious day we were taught Pascal at university. As follows. We were given the Wirth Pascal Report. That was it. From that moment on we were supposed to know the language. I don't see how any "story telling" on the web can teach someone Pascal. The language is about abstract thinking and about expressing oneself elegantly and precisely. If the Wirth Report doesn't teach you that, nothing will. Modern mathematics education tries to teach by showing graphs and pictures, instead of formulas and proofs. But, by doing so, it misses the most important point — that mathematics is about abstract thinking. You will never get around the point that it is the abstract thinking that must be taught. And that's the whole point of the way we were taught Pascal at university. The details of the language can be looked up in a report. The only important thing is — to learn thinking. Regards, Adriaan van Os ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
On 12/29/22 09:53, Adriaan van Os via fpc-pascal wrote: Modern mathematics education tries to teach by showing graphs and pictures, instead of formulas and proofs. But, by doing so, it misses the most important point — that mathematics is about abstract thinking. You will never get around the point that it is the abstract thinking that must be taught. The latter (formulas and proofs in mathematics) is what gave me a head start in programming in high school before I had an formal computer science classes (programming or otherwise). After just a few hours playing with Basic I was like hmm... I already was taught most of this stuff, this is a way to apply it... I had liked doing all the proofs in High School geometry. I just had not seen a practical value in them. When I was learning to program I was like wow, this is what all the stuff was for. So most of my first self taught stuff was related to geometry, but primarily algebra and trigonometry. But the latter two did not lay the computer programming foundation for me like geometry did. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] Working on a new way to educate people about pascal
On 29/12/2022 15:43, wkitty42--- via fpc-pascal wrote: turned out they were doing basic SQL queries for these reports to get "views" of the data that wasn't available in the specific reports i had been tasked to write... things were headed into a more "freeform" format... they basically needed databases with specific information that they could draw information from... it was a huge mindset change... almost like having grown up doing pascal and asm and then trying to figure out LISP on your own in the same way you taught yourself pascal and asm... I've spent pretty much my entire programming career working with end-users, who did much of their own programming. Imho that's the best way to do it - a couple of trained programmers who keep the users on the straight and narrow. Unfortunately, that's not the way most companies want to work - to the massive detriment to said companies as users are forced into the straight-jacket of systems that don't work and have been designed by people who don't understand the job ... Can you imagine those users writing COMPLEX SQL queries? My database career didn't *need* complex queries, the database handled it all ... something relational is completely incapable of :-( Cheers, Wol ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal