Pointers are awesome I have taught them a few times and it's easier to teach them if you can see because you can have class mates point at each other and then do a lot of chaining pointers and pointing people at different papers etc it makes a whole lot more since that way but I will tell you this once you get pointers down even languages that profess not to have pointers make a lot more since because you know what's under the hood and how it works. So stick with it you will get it. Ken -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Alex Midence Sent: Thursday, November 18, 2010 8:58 PM To: programmingblind@xxxxxxxxxxxxx Subject: Re: Good resource for beginning programmers Oh, I'd already decided on that. Too many people keep saying things about this guy's work. I'm working through Accellerated C++ actually. This bit just stuck in my head when I was trying to get my head around pointers. I read this because I figured reading different ways of presenting information might help it click better. Glad to know it's incorrect. I've been somewhat afraid to mess with pointers ever since I read this for fear of an error or oversight of mine ruining my pc. Alex M On 11/18/10, Littlefield, Tyler <tyler@xxxxxxxxxxxxx> wrote: > It is not correct. You can screw up your program for sure, but as we > were talking about: most operating systems lock you in your own memory. > You'll just crash that program if you mess with a dangling pointer. A > dangling pointer is a pointer that doesn't doesn't point to anything > -you- allocated. So: a pointer on initialization or a pointer after you > call delete on it, but don't set it to NULL. As a side note, I recommend > you find a new book. > On 11/18/2010 6:39 PM, Alex Midence wrote: >> Hi, Tyler, >> >> I wasn't trying to scare anyone. I was trying to explain how much >> more low level c or c++ could be than something lie php or python. As >> for whether or not pointers are dangerous. Here's something I read >> recently. It's exerpted from the book c++ from the ground up 3rd >> edition by Herbert Schildt chapter 6 page 121: >> >> "The Null Pointer Convention >> After a pointer is declared, but before it has been assigned a value, it >> will >> contain an arbitrary value. Should you try to use the pointer prior to >> giving >> it a value, you will probably crash not only your program, but perhaps >> even >> the operating system of your computer (a very nasty type of error!). While >> there is no sure way to avoid using an uninitialized pointer, C++ >> programmers >> have adopted a procedure that helps prevent some errors. By convention, if >> a >> pointer contains the null (zero) value, it is assumed to point to nothing. >> Thus, if all unused pointers are given the null value and you avoid the >> use of >> a null pointer, you can avoid the accidental misuse of an uninitialized >> pointer. This is a good practice to follow. Any type of pointer can be >> initialized to null when it is declared. For example, the following >> initializes p to null: >> float *p = 0; // p is now a null pointer >> >> To check for a null pointer, use an if statement, like one of these: >> if(p) // succeeds if p is not null if(!p) // succeeds if p is null >> >> If you follow the null pointer convention, you will avoid many problems >> when >> using pointers." >> >> Clearly, you have to be careful using pointers or you might do some >> damage. That's all I was trying to convey. Now, the big question is >> this: This particular author has been heavily criticized due to a >> book he wrote about fifteen eyars ago about C which has since >> undergone quite a few revisions. Is this information I am quoting >> correct or not? >> >> Thanks. >> Alex M >> >> >> >> >> >> On 11/18/10, Littlefield, Tyler<tyler@xxxxxxxxxxxxx> wrote: >>> Awesome. Well, the point was to keep the OP from getting scared away >>> from c++ in the thought that as alix posted, you could ruen your >>> harddrive, bla bla. On another note, I am kind of curious about some of >>> these attacks you talked about. Is there a good place to learn about >>> them? I can understand the page fault handler; I'd assume you'd just do >>> whatever you want then call the one before or whatever, but I'd like to >>> learn a lot more of the theory behind the attacks, try the code on a box >>> that I can afford to crash a time or 10, etc. >>> >>> On 11/18/2010 1:31 PM, Sina Bahram wrote: >>>> Oh for sure. >>>> >>>> Otherwise, all you're going to do is simply crash your own program. It's >>>> hard to even get a old fashioned blue screen anymore, much >>>> less accidentally corrupt someone else's address space. >>>> >>>> Take care, >>>> Sina >>>> >>>> -----Original Message----- >>>> From: programmingblind-bounce@xxxxxxxxxxxxx >>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Littlefield, >>>> Tyler >>>> Sent: Thursday, November 18, 2010 3:28 PM >>>> To: programmingblind@xxxxxxxxxxxxx >>>> Subject: Re: Good resource for beginning programmers >>>> >>>> Hahaha. That sounds fun. I guess the point I'm trying to make: you have >>>> to >>>> intentionally try to get to this point. You can do these >>>> lovely things, but in order to get there, you have to knowingly escolate >>>> privileges, inject code, whatever. >>>> On 11/18/2010 1:24 PM, Sina Bahram wrote: >>>>> Nope, none of them require API's. >>>>> >>>>> You can do some really weird things with privilege escalation, and >>>>> then it's all over. Jump to lib attacks, return oriented programming, >>>>> jump oriented programming, basic stack smashing, basic heap overflows, >>>>> dll injection, ring -1, -2, and -3 level attacks depending >>>> on virtualization technologies being used, page table corruption >>>> attacks, >>>> chain of trust invalidation, etc, etc, etc. >>>>> That's only the latest stuff. You'd be amazed how many attacks from >>>>> pre 2005 still work. For example, you overwrite the interrupt >>>>> descriptor table, grab some debug registers, point one of them at your >>>>> page fault exception handler, and it's over ... There is no >>>> way to detect that sucker, no matter how good your antivirus is. >>>>> Take care, >>>>> Sina >>>>> >>>>> -----Original Message----- >>>>> From: programmingblind-bounce@xxxxxxxxxxxxx >>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of >>>>> Littlefield, Tyler >>>>> Sent: Thursday, November 18, 2010 3:18 PM >>>>> To: programmingblind@xxxxxxxxxxxxx >>>>> Subject: Re: Good resource for beginning programmers >>>>> >>>>> Well, you need to go through an API usually, no? It's not going to >>>>> happen >>>>> with a dangling pointer in a normal app. >>>>> On 11/18/2010 1:16 PM, Sina Bahram wrote: >>>>>> Not hard at all, just minorly annoying. >>>>>> >>>>>> Take care, >>>>>> Sina >>>>>> >>>>>> -----Original Message----- >>>>>> From: programmingblind-bounce@xxxxxxxxxxxxx >>>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of >>>>>> Littlefield, Tyler >>>>>> Sent: Thursday, November 18, 2010 3:04 PM >>>>>> To: programmingblind@xxxxxxxxxxxxx >>>>>> Subject: Re: Good resource for beginning programmers >>>>>> >>>>>> That's what I was getting at; the whole virtual addressing and stuff. >>>>>> He >>>>>> was making it sound as if: >>>>>> int i[10] >>>>>> i[10]=300 >>>>>> Was going to make things go boom. :) I jus didn't want the OP to be >>>>>> scared off. Windows and *nix both have virtual addressing, so >>>>>> accessing >>>>>> bob's process from joe's process is fairly hard. >>>>>> On 11/18/2010 12:57 PM, qubit wrote: >>>>>>> Hi Ty -- I am not sure about windows so take this with a grain of >>>>>>> salt, but it is true that an OS does have some protections, such as >>>>>>> preventing writing to someone else's virtual memory, to guard >>>>>>> against malware. However a truely pathological C++ program can use >>>>>>> pointers to do some interesting things with stack frames that will >>>>>>> cause a lot of very strange behavior. >>>>>>> But no, it won't go outside the process's virtual space, fortunately. >>>>>>> And perhaps it varies with the OS. >>>>>>> Keep in mind though that a debugger is just a program, and needs to >>>>>>> have the ability to control a process and therefore needs to be able >>>>>>> to write to addresses that are otherwise protected. >>>>>>> I particularly enjoyed debugger development when I was working in >>>>>>> language support. It is fascinating to me to see how a process is >>>>>>> implemented. >>>>>>> --le >>>>>>> >>>>>>> ----- Original Message ----- >>>>>>> From: "Littlefield, Tyler"<tyler@xxxxxxxxxxxxx> >>>>>>> To:<programmingblind@xxxxxxxxxxxxx> >>>>>>> Sent: Wednesday, November 17, 2010 7:32 PM >>>>>>> Subject: Re: Good resource for beginning programmers >>>>>>> >>>>>>> >>>>>>> You're making c++ sound way way to dangerous. If you mess up with a >>>>>>> pointer, unless you're programming at a way way low level and >>>>>>> directly accessing the harddrive, you're not going to trash anything. >>>>>>> You have access to memory, but like I said before when you went off >>>>>>> on this "c++ can blow up the world," thing, the OS protects >>>>>>> programmers from themselves. Or sort of, anyway. >>>>>>> On 11/17/2010 6:20 PM, Alex Midence wrote: >>>>>>>> Good lord, no! php might be written in c++ but, I promise you that >>>>>>>> you can not do the same things. Php won't have stuff like template >>>>>>>> metaprogramming, generic programming nor will it compile right down >>>>>>>> to binary like c++. If you write stuff in c++, it runs lightning >>>>>>>> fast. >>>>>>>> I don't know the syntax to php but, I'm pretty sure it's too >>>>>>>> different from c++ to be concsidered a dialect. Python is >>>>>>>> definitely nothing like c in its syntax. And, you could never >>>>>>>> program a driver in Python. It would take forever if it runs at >>>>>>>> all. They are not dialects of the languages they are written in. >>>>>>>> I wish someone who was a bonified computer scientist could jump in >>>>>>>> and explain this in terms more fitting. Scripting languages are >>>>>>>> used >>>>>>>> primarily for tweaking. >>>>>>>> Look at the Jaws scripting language, for instance. Languages like >>>>>>>> Python and lua are used to customize applicatiosn written in stuff >>>>>>>> like c++ so that they don't have to rewrite the whole app and >>>>>>>> recompile it just for a few modifications. It's hard to explain. >>>>>>>> Honestly, you will just have to do some research until you find >>>>>>>> something that explains it to you in a way that will make sense to >>>>>>>> you. >>>>>>>> >>>>>>>> Yes, the lines between some scripting languages and programming >>>>>>>> languages are becoming blurred but the great yawning chasm that >>>>>>>> will never be crossed is still the interpreted versus compiled >>>>>>>> chasm. >>>>>>>> You might technically be able to write an application from the >>>>>>>> ground up in pure Python but, I promise you that if that thing goes >>>>>>>> toe to toe with another version of the same application written in >>>>>>>> c++, it will lose every time. By the time the Python app is done >>>>>>>> printing out its welcome message, the c++ app has done what was >>>>>>>> asked >>>>>>>> of it and closed. >>>>>>>> This is because there are too many layers between the app and >>>>>>>> the binary code for it. It's first got to go through the >>>>>>>> interpreter which then puts it into binary. The app written in c++ >>>>>>>> runs right on the system itself. You have to go to something like >>>>>>>> c or asm to get lower level. The isntructions to the computer >>>>>>>> don't have to be translated before execution. The day when what >>>>>>>> you mention with regard to making something like c++ available to >>>>>>>> the nonprogrammer is way way far off in the future if it will ever >>>>>>>> come. >>>>>>>> I frandkly hope it doesn't The thought of some nonprogrammers I >>>>>>>> know with acces to that kind of computing power is frightening. I >>>>>>>> mean, you can tell the computer exactly what to do right down to >>>>>>>> what goes where in each individual piece of memory. There are no >>>>>>>> shortcuts in that language. >>>>>>>> And, there shouldn't be. It gives you so many chances to shoot >>>>>>>> yourself in the foot that if you aren't down in the inner workings >>>>>>>> of it, as it were, under the proverbial hood, you won't be able to >>>>>>>> control what it does. You could realistically totally trash a hard >>>>>>>> drive if you screw up just right with pointers and if you do >>>>>>>> something like overflowing an array of 10 items with say 100 or >>>>>>>> something like that. I hear you can do some serious damage with >>>>>>>> stuff >>>>>>>> like that. >>>>>>>> Can't see that kind of damage being caused by php or python. >>>>>>>> >>>>>>>> Alex M >>>>>>>> >>>>>>>> On 11/17/10, Client Services<operations@xxxxxxxxxxxxxxx> >>>>>>>> wrote: >>>>>>>>> Hi- >>>>>>>>> Thank you for that explanation. >>>>>>>>> Seems like the line between programming and scripting languages is >>>>>>>>> getting blurred. >>>>>>>>> Are scripting languages becoming as powerful as a programming >>>>>>>>> language? >>>>>>>>> Or >>>>>>>>> do they just bring the best out of the programming language they >>>>>>>>> are written in. >>>>>>>>> If PHP and Python are written in C and C++, then why can't they >>>>>>>>> make PHP and Python to be more like a CMS and useable by >>>>>>>>> non-programmers? >>>>>>>>> In summary, if I have this correct, a scripting language is >>>>>>>>> actually written in a programming language and is just a way of >>>>>>>>> accessing and using the given programming language. >>>>>>>>> When I use PHP and Python, I am actually using C and C++, just in >>>>>>>>> a unique dialect? That is assuming Python and PHP are written in >>>>>>>>> C or >>>>>>>>> C++. >>>>>>>>> So somehow, PHP and Python were supposed to make C or what ever >>>>>>>>> programming language easier to use? >>>>>>>>> Is this accurate? >>>>>>>>> Sorry for the dumb questions. >>>>>>>>> >>>>>>>>> H.R. Soltani >>>>>>>>> >>>>>>>>> -----Original Message----- >>>>>>>>> From: programmingblind-bounce@xxxxxxxxxxxxx >>>>>>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of >>>>>>>>> Christopher >>>>>>>>> Sent: Wednesday, November 17, 2010 6:24 PM >>>>>>>>> To: programmingblind@xxxxxxxxxxxxx >>>>>>>>> Subject: Re: Good resource for beginning programmers >>>>>>>>> >>>>>>>>> This is one of my pet peeves. >>>>>>>>> >>>>>>>>> A programming language is a language that is, in the majority of >>>>>>>>> the cases, compiled to native machine code -and- used for >>>>>>>>> application development (i.e. C, C++, D) A scripting language is a >>>>>>>>> language that is, in the majority of the cases, interpreted -and- >>>>>>>>> used to control applications, and sometimes application development >>>>>>>>> in general (i.e. >>>>>>>>> Python, PHP, Ruby, AutoIT, etc.) Java was not a true programming >>>>>>>>> language until recently when it decided to compile its bytecode >>>>>>>>> on-the-fly. C# has always been a programming language because it >>>>>>>>> has always compiled its MSIL on-the-fly. PHP and Python are both >>>>>>>>> written in C and are both interpreted. (PHP might be written in >>>>>>>>> C++.) >>>>>>>>> >>>>>>>>> I refuse to call a non-compiled language a programming language, >>>>>>>>> regardless of the language. >>>>>>>>> >>>>>>>>> So, here is a simple test to see what is a programming language >>>>>>>>> and what is a scripting language. >>>>>>>>> >>>>>>>>> 1. Can you write a full application in the language? If yes, then >>>>>>>>> is the language compiled? If yes, then it is a programming >>>>>>>>> language. >>>>>>>>> 2. Can you write a full application in the language? If yes, then >>>>>>>>> is the language compiled? If no, then it is a scripting language. >>>>>>>>> 3. Can you write a full application in the language? If no, then >>>>>>>>> it is a scripting language. >>>>>>>>> >>>>>>>>> >>>>>>>>> On 11/17/2010 2:24 PM, Alex Midence wrote: >>>>>>>>>> I am not at a stage in my learning where I can do well at >>>>>>>>>> explaining this so, I have provided some links for you to explore: >>>>>>>>>> >>>>>>>>>> Scripting language >>>>>>>>>> http://en.wikipedia.org/wiki/Scripting_language >>>>>>>>>> >>>>>>>>>> Programming language: >>>>>>>>>> >>>>>>>>>> http://en.wikipedia.org/wiki/Programming_language >>>>>>>>>> >>>>>>>>>> Be warned: This will create more questions for you. Have fun!!! >>>>>>>>>> >>>>>>>>>> Alex M >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 11/17/10, Client Services<operations@xxxxxxxxxxxxxxx> >>>>>>>>>> wrote: >>>>>>>>>>> Hi- >>>>>>>>>>> What is the difference between a scripting language and a >>>>>>>>>>> programming language? >>>>>>>>>>> So if PHP and Python are scripting languages, what programming >>>>>>>>>>> language >>>>>>>>> are >>>>>>>>>>> they written in? >>>>>>>>>>> And why are they called scripting languages? >>>>>>>>>>> >>>>>>>>>>> H.R. Soltani >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -----Original Message----- >>>>>>>>>>> From: programmingblind-bounce@xxxxxxxxxxxxx >>>>>>>>>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Alex >>>>>>>>>>> Midence >>>>>>>>>>> Sent: Wednesday, November 17, 2010 3:52 PM >>>>>>>>>>> To: programmingblind@xxxxxxxxxxxxx >>>>>>>>>>> Subject: Re: Good resource for beginning programmers >>>>>>>>>>> >>>>>>>>>>> You've got scripting languages and programming languages there. >>>>>>>>>>> Javascript is client side scripting. Websites run scripts on >>>>>>>>>>> the visitor's machine to dynamically change themselves according >>>>>>>>>>> to stimuli. Php is a scripting language that does dynamic >>>>>>>>>>> webpage changing among other things from the server side. It is >>>>>>>>>>> used in conjunction with database solutions like my sql and the >>>>>>>>>>> like. >>>>>>>>>>> Java and C are both programming languages. Java is a high level >>>>>>>>>>> object-oriented language that runs on a virtual machine. It is >>>>>>>>>>> used to create applets and web apps for all sorts of functions. >>>>>>>>>>> Java is also used to create desktop applicaitons like, for >>>>>>>>>>> instance, Eclipse, Open Office, and things of that nature. C is >>>>>>>>>>> a low-level procedural programming language that is used for >>>>>>>>>>> desktop aplications and low-level programming such as drivers, >>>>>>>>>>> utilities and the like. >>>>>>>>>>> Certain platforms are also written in C like, for instance, >>>>>>>>>>> Windoes is in C. I believe Gnome was also written in C. I went >>>>>>>>>>> into this detail because your post indicated that you thought >>>>>>>>>>> these were all web development languages and they are not. >>>>>>>>>>> Python is a scripting language that can do a lot of the same >>>>>>>>>>> things programming languages can do and has a reputation for >>>>>>>>>>> being easy to learn and fostering rapid development. An >>>>>>>>>>> applications that php could not create, IMHO is a screen reader. >>>>>>>>>>> Python was used to create two of them. >>>>>>>>>>> >>>>>>>>>>> Hope that helps, >>>>>>>>>>> Alex M >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 11/17/10, Client Services<operations@xxxxxxxxxxxxxxx> >>>>>>>>>>> wrote: >>>>>>>>>>>> Hi everybody- >>>>>>>>>>>> I am trying to decide where to start as far as learning >>>>>>>>>>>> programming. >>>>>>>>>>>> I decided I would focus on 1. PHP, 2. JavaScript, 3. Java, 4. C >>>>>>>>>>>> I figured these are being used the most in web development and >>>>>>>>>>>> custom applications. So, where does Python come in? How would >>>>>>>>>>>> you compare >>>>>>>>> Python >>>>>>>>>>>> with Java, PHP, and C?? >>>>>>>>>>>> Can anybody give me an example of what cannot be developed in >>>>>>>>>>>> PHP which >>>>>>>>>>> can >>>>>>>>>>>> be developed in Python? >>>>>>>>>>>> Or how about Java vs Python if PHP is to lowly? I have just >>>>>>>>>>>> heard PHP >>>>>>>>> has >>>>>>>>>>>> limitations. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> H.R. Soltani >>>>>>>>>>> __________ >>>>>>>>>>> View the list's information and change your settings at >>>>>>>>>>> //www.freelists.org/list/programmingblind >>>>>>>>>>> >>>>>>>>>>> __________ >>>>>>>>>>> View the list's information and change your settings at >>>>>>>>>>> //www.freelists.org/list/programmingblind >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> __________ >>>>>>>>>> View the list's information and change your settings at >>>>>>>>>> //www.freelists.org/list/programmingblind >>>>>>>>>> >>>>>>>>> __________ >>>>>>>>> View the list's information and change your settings at >>>>>>>>> //www.freelists.org/list/programmingblind >>>>>>>>> >>>>>>>>> __________ >>>>>>>>> View the list's information and change your settings at >>>>>>>>> //www.freelists.org/list/programmingblind >>>>>>>>> >>>>>>>>> >>>>>>>> __________ >>>>>>>> View the list's information and change your settings at >>>>>>>> //www.freelists.org/list/programmingblind >>>>>>>> >>>>>>>> >>> >>> -- >>> >>> Thanks, >>> Ty >>> >>> __________ >>> View the list's information and change your settings at >>> //www.freelists.org/list/programmingblind >>> >>> >> __________ >> View the list's information and change your settings at >> //www.freelists.org/list/programmingblind >> >> > > > -- > > Thanks, > Ty > > __________ > View the list's information and change your settings at > //www.freelists.org/list/programmingblind > > __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind