EvilZone
Programming and Scripting => Projects and Discussion => : lucid December 15, 2013, 04:49:04 AM
-
Now that I'm finally done with school it's time for me to get back into doing what I want. One of those things I want to do is learn programming languages. Lots of them. Unfortunately for me it's only plausible to learn one or two at a time. So my ever potent ADD has directed me towards Lisp. That's right. Lisp. I'm sure there aren't many of you here but I know there's one or two people who have at least some experience with this particular language, so I wanted to start a discussion about it.
You see, I'm also interested in coding malware. I've read up a little on Lisp and if memory serves it seems that the general consensus is that Lisp is a good language to learn if you want to become a more well-rounded programmer, but that it's not a particularly practical language. I've also read that Lisp is good for AI programming, but I haven't seen much else.
I'm not asking if Lisp is a good programming language for writing malware, I'm mainly asking what kind of practical uses does Lisp have in general. Oh, and if you are overcome with the urge to vomit the popular phrase C/++ and ASM! all over this thread then please, see yourself to a toilet or the nearest garbage can. I'm well aware that those are good languages for coding malware as well as many other things. I can read too.
So, what practical uses does Lisp have? What kind of language is it in your opinions? Discuss.
-
This has also crossed my mind a few times, but haven't given it much thought. This was posted today on HN, I think it will answer some of your questions: Lisp Hackers (https://leanpub.com/lisphackers/read).
-
First of all, it's Lisp. Lower case.
Why the fuck would you want to code malware in it?
Lisp is the high-level language. It's homoiconic. This means it treats code and data as identical, allowing for flexibility unlike any other language. Its syntax is very simple and based on a simple pattern known as S-expressions, the same S-expressions it uses to build its abstract syntax tree during interpretation.
Every single language feature you can name: Lisp has it. That's because Lisp pioneered it. Lisp was the first language to have garbage collection, conditional expressions, dynamic typing, recursion and many other things we now take for granted.
The homoiconicity of Lisp makes it a programmable programming language. You can manipulate and alter language constructs with ease to create what are known as macros (see example here: http://stackoverflow.com/questions/267862/what-makes-lisp-macros-so-special (http://stackoverflow.com/questions/267862/what-makes-lisp-macros-so-special)), and even create your own little domain-specific languages to use in projects.
Lisp is powerful like no single other language. Yet, unlike C++, it manages to retain so much elegance and beauty. C++ is a horrific, ugly and arcane behemoth. Lisp is the light, the way, the hope.
A programmer who does not know Lisp is doomed to ignorance and stagnation. That's the harsh reality. Keep writing your Python scripts.
Now, Lisp has many dialects. The two most popular are Common Lisp and Scheme. Common Lisp basically tries to unify a lot of Lisp dialects, and as such has a huge library and larger learning curve. Scheme is small, elegant and originated in academics. I recommend you start with Scheme first. Use an interpreter like Chicken Scheme which has lots of third-party libraries written for it.
Lisp (particularly Scheme) has also been the forefront language in one some of the greatest computer science books of all time, such as Structure and Interpretation of Computer Languages (if you haven't read this book yet, DO IT NOW YOU MORON. This is one of the single greatest books you will read in your life, it will instill you with such a profound sense of enlightenment in so many areas of theoretical CS and practical programming. You will never be the same foolish code monkey again. It's a heavily renowned classic for a reason. STOP READING MY POST AND PICK IT UP.)
Then there's also The Little Schemer, a concise tutorial on Scheme that immerses you deep into the language immediately and it also has a good sense of humor.
What practical uses does Lisp have? Everything. You may have heard of Clojure? It's a Lisp dialect built on top of the JVM that is currently all the rage with web developers. You could learn that, too, if you'd like. Especially if you're already familiar with the Java API.
Lisp can be used to program anything at all. In fact, there were even special purpose computers developed by the MIT back in the '70s and '80s which had their hardware designed to run software (from the operating system to the application level) written in Lisp. They were called Lisp Machines and emulators exist for them. These machines pioneered laser printing, window managers, mice and bitmapped graphics. Look them up.
OS written in Lisp: https://en.wikipedia.org/wiki/Genera_%28operating_system%29 (https://en.wikipedia.org/wiki/Genera_%28operating_system%29)
Lisp is widely considered by great computer scientists and programmers to be the single greatest programming language ever conceived by man. This is not an exaggeration. See http://lispers.org/ (http://lispers.org/).
tl;dr Learn Lisp, you idiot.
-
Why the fuck would you want to code malware in it?
No idea, that's why I was asking.
tl;dr Learn Lisp, you idiot.
Lol alright already. I suppose I should have known not to make a post like this anyway. Off to learn some Lisp. Probably CL
-
Now that I'm finally done with school it's time for me to get back into doing what I want. One of those things I want to do is learn programming languages. Lots of them. Unfortunately for me it's only plausible to learn one or two at a time. So my ever potent ADD has directed me towards Lisp. That's right. Lisp. I'm sure there aren't many of you here but I know there's one or two people who have at least some experience with this particular language, so I wanted to start a discussion about it.
You see, I'm also interested in coding malware. I've read up a little on Lisp and if memory serves it seems that the general consensus is that Lisp is a good language to learn if you want to become a more well-rounded programmer, but that it's not a particularly practical language. I've also read that Lisp is good for AI programming, but I haven't seen much else.
I'm not asking if Lisp is a good programming language for writing malware, I'm mainly asking what kind of practical uses does Lisp have in general. Oh, and if you are overcome with the urge to vomit the popular phrase C/++ and ASM! all over this thread then please, see yourself to a toilet or the nearest garbage can. I'm well aware that those are good languages for coding malware as well as many other things. I can read too.
So, what practical uses does Lisp have? What kind of language is it in your opinions? Discuss.
LISP is a unique language.... I mean, see vezzy's post for the avid fan's perspective. From my perspective lisp is a good language for the following reasons:
1) It forces you to think differently from programming in something like C++ (same is true of other languages like MatLab)
2) It forces you to see things from a different perspective
Lisp has some advantages yes, but it's not really good at *one* thing but okay at a lot of things just like C++. It's more "specialized" in areas because of certain qualities of the language but so is a language like C++. C++ trades Lisp's "beauty" (beauty is in the eye of the beholder) for raw power, flexibility, and ability to do basically whatever, it may just be complex to achieve that. With regards to AI, Lisp isn't really *that* good for AI by itself BUT many AI specific languages are at least loosely based off it because there are a few concepts from Lisp that are pretty good for AI.
-
Lisp is widely considered by great computer scientists and programmers to be the single greatest programming language ever conceived by man
In case you want to read another article of a LISP fan I could recommand that one:
http://www.paulgraham.com/avg.html (http://www.paulgraham.com/avg.html)
-
I was required to learn Scheme in one of my CS classes sophomore year. It was the most unique type of programming I've ever done. The class was called "Discrete Mathematics for Computer Science". So we naturally did a lot of set theory, proofs, etc.
However, I had never programmed in such a way before. Almost everything we did was in some way based on recursion. It was really difficult for me to wrap my head around, but once everything clicked it seemed like the coolest programming style in the world! And I would also highly suggest The Little Schemer. That book helped me SO much in the course. It starts off very simple and quickly builds upon each principle with tiny steps.
That being said, I would definitely recommend learning Scheme first before trying to do any larger projects in Clojure or common Lisp. In my class, our final lab / project was to implement RSA encryption and decryption, which was an awesome way to cement my learning.
From my experience, I definitely couldn't see anyone effectively writing any malware in Lisp or Scheme, but hey it's a creative idea. Good luck man.
-
LISP is a unique language.... I mean, see vezzy's post for the avid fan's perspective. From my perspective lisp is a good language for the following reasons:
1) It forces you to think differently from programming in something like C++ (same is true of other languages like MatLab)
2) It forces you to see things from a different perspective
Agreed, since Lisp are held together by structures called cons cells. It force you to think from a different perspective, from structure tree to tail recursive....
By my personal point of view, I think that Lisp language is hailed as the most powerful programming language, is because of it's academic reputation, in AI, especially. Oh yes, If you want to implement AI in malware... But the hardest part of programming malwares in Lisp is not that it's cryptic syntax, but....
- You may found that there is no way to *build* executable file in lisp. You need to dump the core file outta the Lisp environment ( runtime environment or compiler )
EDITED: and if you dumped the core file from SBCL, it should be extremely big.
- If not, you need to make a MAKEFILE-like config file and compile the Lisp malware in victim side. Of course, you need a Lisp environment too.
PS. I got your idea before, that Lisp malware. But mastering lisp need a lot of time and practise :-[