Esoteric programming languages for an esoteric mind?

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Tue Jul 28, 2015 2:05 pm UTC

Hello, everyone! As I've been explaining to people on a few other forums I've been joining lately, I'm a bit of an oddball. I'll get that out of the way first, especially since my question will be about finding the right programming language for me to learn, based on my own cognitive processes. See, a lot of psychological doctors have worked with me over the years, and while they've managed to reach a few diagnoses and rule out others based on what they've observed, ultimately their knowledge of how my mind works is limited to "scratching the surface of the tip of the iceberg" of my mind. Really, if the doctors couldn't see me, or otherwise they didn't have any way of knowing I was human, if all they saw of me was my thoughts, they'd think I was some kind of advanced alien life form; they can't really understand my cognitive processes, but they also see that the results of those processes are often more reasonable and often display a greater understanding of the discussed topic than than the processes of most people. At least, that's what they find when they're willing to look through all of that; some of the doctors get mad and stubborn, for example, when I'm putting more thought and effort into psychoanalyzing them than they are willing to put into psychoanalyzing me. Otherwise, let's just say that my posts or comments on Facebook often include a preamble of some kind, so I have a lot of things for those psychological doctors to look at. For the most part, I've had to discover things about myself on my own.

While I have a document on my Google Drive that describes what I've discovered about my cognitive processes in greater detail, I'm afraid the forum rules don't allow me to post links until I've made five posts... so I'll put it all in a spoiler box.

Spoiler:
The following is from a response I gave to a troll, who argued mostly unintelligible nonsense about words vs. Concepts:

"I know concepts better than anyone else I know of. My mind thinks of concepts first and foremost, and despite being without any intrinsic sensory relation, they're the easiest for me to understand; words, on the other hand, are much harder for me to deal with, since they don't even form in my mind until several steps later. After the concept itself comes the abstract visuals and awesome synthesizer solos (though sometimes, it's an electric guitar, or symphonic orchestral music), followed by the scenic archetypal visualization, then the recollection of contexts, and when the words finally come along, there's a bunch of them that I have to wade through before picking out the right one. Whenever words are presented to me, the whole process goes in reverse.

The fact that I'm so good with concepts is the reason for which I was able to overcome the obstacle presented by Gödel's incompleteness theorems in designing an objective, secular moral theory that actually *works,* long before I had ever heard of Gödel's incompleteness theorems.

[...]

(On the other hand, the fact that I'm so bad with words is why I'm always editing my posts here and elsewhere several times over, because I've spotted semantic errors in the original posts; it's also why I have a thesaurus addiction, since I've had to use them so often in trying to find the right words for my concepts. Don't even get me started on my verbal dyspraxia and problems processing spoken words, due to the delays I go through while I'm busy rocking out to the awesome music.)"

Notes:

1. Back in a darker time of my life, when I denied myself any emotions and I saw no point in continuing to live (though I was too weak to even kill myself), the music in my head was pretty awful. It was extremely disjointed, as though a pure novice was playing the instruments, and not caring in the slightest that the noise they produced was insufferable. Often, there would even be a repetition of a certain random sequences of notes, as though it was being played back on a broken record. Now, though, the music isn't merely tolerable, but actually pretty good, as stated in the original post.

2. When I can type my words out beforehand, this makes it unnecessary to try to form the words as I'm speaking, thus allowing me to talk at a faster rate. When I get the chance to do this, however, I've noticed that my speech pattern goes from "verbal dyspraxia" to a speech pattern reminiscent of that of William Shatner. I don't even consciously try to do this; it just... happens. As I've just demonstrated this in the previous sentence, I'll even be compelled to simulate this speech pattern in text, to show emphasis on certain words.

..........

The following is from an expansion on the discussions in the above post, modified to correct grammatical errors:

"Another aspect of what I've already described about my thought process, something I've already known (but which wasn't relevant at the time), is that, while all of this stuff is happening in my process of translating from concepts to words and back, each step has the process branch out into related concepts, which are all going through their own processes at the same time. Since I'm about to use some computer technology metaphors, I'll go ahead and say that my head has a tendency to overheat, like an overclocked CPU during a resource-intensive process.

With this in mind, another thing I've realized about my thought process is that my subconscious mind is kind of like a multi-threaded processor, with multiple trains of thought being processed at the same time. Unfortunately, my conscious mind, like a user interface, has a limited capacity to "display" these processes, meaning that I'm only consciously aware of around 1-3 processes at a time. Whatever subconscious processes don't "display" in my conscious mind still happen, and if something significant happens in such processes, my conscious mind will get an "alert" of some kind (it's really hard for me to describe, since my mind primarily works with concepts that have no sensory-related "appearance").

It gets confusing sometimes, when a subconscious process completes itself in the background, and my conscious mind gets some "output," basically giving me the process's conclusion when I have no idea of how I arrived at it, because my conscious mind was focused on something else. When I have more time to think (such as online, text-based conversations), I can actually try to go through the subconscious processes again, but with my conscious mind "displaying" the process in question so that I can see the process being performed, possibly catching and correcting mistakes that were made during the first time the process occurred. However, if I'm talking in-person, not only do I have the verbal dyspraxia to deal with, but I also can't take the time to re-run the process, thus leaving in any errors that might have resulted in a false output.

Speaking of conversations: occasionally, the "switch" has happened in the middle of in-person conversations, and while my conscious mind was exploring other trains of thought, a subconscious process would then take over, and I would still able to maintain my part of the conversation, and even make decisions! Of course, switching the conscious "display" back to the conversation makes me suddenly realize that I don't know what I was just saying or doing; one such event that was even more amazing than it was embarrassing, was when this happened while I was playing the role of "game master" in a pen and paper RPG. Anyone who plays such games will know how important that role is, and how much thought goes into that role. In spite of this, the players didn't even notice anything different in what I was doing until I switched back, and suddenly stopped talking because I was trying to figure out what I was doing, just moments before! I don't know if I should be amazed, or terrified...

Either way, a lot of this new self-discovery seems to be triggered when I'm paying attention to 2 or 3 processes. This allows them to synergize and lead to realizations that wouldn't be made without combining the processes in some way. Oddly enough, everything in this post is one of the resulting realizations from synergy, when I still had the "branching out" fresh in my mind, and I got to thinking about the gaps in my memories of my own thought processes."


Now, to the point... I was just barely able to pass a Java programming course over the summer semester, and while my grades on the assignments I've passed in were pretty good, I was unable to get many assignments passed in, because I was unable to understand how to work with the finicky syntax structure and general use of code in Java, which, as I'm sure the people here are well aware of, is something I'll be dealing with in most programming languages. I've tried learning how to program for years, now, and in addition to barely being able to work with the code while I'm working on it, I can barely remember what I had learned as soon as I stop working on it. Given what's in the spoiler block, I'm terrible at understanding things when I'm working with languages; it's hard enough dealing with other humans, with whom I can try to improvise and try to explain things in alternative ways. Dealing with computers is much harder, since I seemingly can't improvise at all. Then, I'd figure something out via an unmonitored subconscious process, but I wouldn't know how I even came to that conclusion, and it just got harder as my only leads for what to do end up leading nowhere, since I really just didn't know what I was doing. I didn't even know what to look up; for example, on my final project, which I was never able to finish (and barely able to start), I had to try calling methods from one class to another. I could find general instructions on how to do so, and I could find examples of code, but I couldn't find both in the same place. I had no idea which examples of code were supposed to do what, and I spent over a week just trying to find that.

So, what I'm wondering is if there's some esoteric programming language out there that would be easier for me to understand. Given that my mind works best with concepts that have no related sensory information, a programming language that works in a way my mind works is probably too much to ask for, but if I could find a programming language that's closer to that step of the process - say, a language that mostly works with archetypes, like those from Jungian psychology - I might be able to work with that. Such a language is probably going to be esoteric... I'm not sure how well I can learn how to program in a more common language with the experience there, but it would be a start.

User avatar
Xanthir
My HERO!!!
Posts: 5426
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby Xanthir » Tue Jul 28, 2015 3:03 pm UTC

In short, no, all programming languages are finicky syntax beasts.

In long, Java is a terrible language in the first place, one of the kings of finicky syntax beasts. Try a language with much simpler syntax, like Racket/Scheme or one of the other Lisps.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Tue Jul 28, 2015 3:48 pm UTC

Xanthir wrote:In short, no, all programming languages are finicky syntax beasts.


I figured as much, but you never know how weird esoteric languages can get... I don't remember the name of the language, but I've seen one where the code consists of the empty space in an image.

I know that the computer has to be able to understand the instructions given, and with a computer's limited ability to use inductive reasoning (I've heard of recurrent neural networks, which seem able to simulate inductive reasoning, but I'm not sure how that works, or what kind of hardware is needed for that), syntax is important, and it needs to be finicky. To get around this, I'm wondering if there's a language whose syntax is closer to how I think.

In long, Java is a terrible language in the first place, one of the kings of finicky syntax beasts. Try a language with much simpler syntax, like Racket/Scheme or one of the other Lisps.


Well, Java wasn't my choice; it was chosen for me, since that's what was used in the class, "Principles of Computer Science." It was an introductory class in the Computer Science program at my college.

User avatar
Xanthir
My HERO!!!
Posts: 5426
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby Xanthir » Tue Jul 28, 2015 7:06 pm UTC

I don't remember the name of the language, but I've seen one where the code consists of the empty space in an image.

You're probably thinking of Piet, which encodes a program in something reminiscent of a Piet Mondrian painting. This is just an intentionally tricky way to write the program, though; the actual Piet language is only barely more usable than Brainfuck, one of the simplest Turing-complete languages usually considered. "Simple" in this case translates to "virtually unusable", because you have virtually no abstraction to work with.

with a computer's limited ability to use inductive reasoning

There are a number of theorem-proving languages, like Coq, that are built to use logical reasoning of various sorts, to help prove theorems. "Normal" programming languages aren't like that, because it's harder to predict how those kinds of languages work, and that sort of reasoning isn't as helpful as straightforward programming.

(I've heard of recurrent neural networks, which seem able to simulate inductive reasoning, but I'm not sure how that works, or what kind of hardware is needed for that)

INNs are tools/algorithms, not programming languages. You train them to do something, and they encode that knowledge in a tricky way vaguely similar to how brains work. They're still written in normal programming languages; they're just a funky (and unreasonably effective, for some tasks) strategy for programming certain kinds of tasks, mostly those that involve extracting structure from low-level information (like categorizing pictures, for a recent example).

To get around this, I'm wondering if there's a language whose syntax is closer to how I think.

Maybe you'd like Prolog? In it, you make statements and predicates, and the language figures out how to satisfy them. It's definitely a different model to most traditional programming languages, and you can actually do productive stuff in it if you care.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby BedderDanu » Tue Jul 28, 2015 7:52 pm UTC

Maybe this isn't a language problem, but an IDE one?

What were you using to write your Java with? Some programming environments really help out with things like syntax, and suggesting what you should be filling out where, and things like that.

So, you could write something like

Code: Select all

Math.


And then the program comes up with a list of things, like

Code: Select all

Math.
  Abs
  Average
  Product
  Sum
  ...


Which might help remembering what you were trying to do at any given moment. I find it really helps me stay focused on what I want to happen.

IN addition, it helps fill out the finicky stuff automatically in a lot of cases, and tells you immediately if you've made a mistake.(you don't necessarily have to run the program to see the error.)

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Tue Jul 28, 2015 9:22 pm UTC

Xanthir wrote:INNs are tools/algorithms, not programming languages.


I understand that; I was speaking about how I understand computers to work in a general sense. That's one of the problems I have; it's hard for me to predict how people (and computers) will interpret the things I say. The translation between word and concept isn't exact, given that many words can refer to many concepts, and many concepts have many words that can refer to them.

It's especially hard to deal with when I'm talking about formal science on Facebook, given how a lot of the terminology dealing with broad topics in formal science isn't really standardized; still, when I'm talking with fellow humans, I can improvise with my terminology, i.e. going between "metaphysics," "existential logic," and one of my own terms, "the laws of possibility," as needed during debates and other discussions. As I've mentioned in the spoiler block, I've come up with what may be the only working objective, secular moral system in human history, using what I call "highest order logic," basically a single operational axiom to define "good," and building the whole system around that one axiom (which gets rid of the need for additional rules to cover specific scenarios, thus overcoming the obstacle presented by Gödel's incompleteness theorems), and it was easy enough for me to do that I didn't even need to learn about such things from any external source beforehand. At the same time, coming up with the concepts was the easy part... I've been able to describe the concepts in pieces, scattered all over my Facebook posts over a long time, but compiling it all into words that can accurately describe the whole thing will take a lot more effort. Before you dismiss all of that for being on Facebook, as did those on a different forum that I'd rather not mention(they claim to be an intellectual forum dedicated to science and similar topics, but the whole site is dominated by trolls who have managed to turn a narrow purview of scientific discovery into religious dogma that completely misses the point of science in the first place), I'll... well, that's yet another tangent, and I'm already straying off-topic a bit too much as it is.

The point was that I can at least try to improvise when talking to people. Computers are, well... you know...

Maybe you'd like Prolog? In it, you make statements and predicates, and the language figures out how to satisfy them. It's definitely a different model to most traditional programming languages, and you can actually do productive stuff in it if you care.


I've briefly done some searching online, and Prolog looks like something that might be worth trying. I haven't been able to look much into it so far; I've started reading through the terms and conditions for the Personal Edition, to see if I'll need to pay anything for that version. I don't have enough money to buy much of anything. It's... hard to find employment, when you're an oddball whom modern psychology can't understand, who has yet to earn a college degree and whose personality and goals in life don't really lead very strongly toward any career other than "philosopher" or "hero," both being careers of little-to-no pay in modern times.

BedderDanu wrote:Maybe this isn't a language problem, but an IDE one?

What were you using to write your Java with? Some programming environments really help out with things like syntax, and suggesting what you should be filling out where, and things like that.


I was using NetBeans IDE 8.0.2, as instructed by the professor in the class.

User avatar
Angua
Don't call her Delphine.
Posts: 5943
Joined: Tue Sep 16, 2008 12:42 pm UTC
Location: UK/[St. Kitts and] Nevis Occasionally, I migrate to the US for a bit

Re: Esoteric programming languages for an esoteric mind?

Postby Angua » Tue Jul 28, 2015 9:39 pm UTC

Not that this has much to do with coding, but have you looked into learning lojban? You might find it interesting.
Crabtree's bludgeon: “no set of mutually inconsistent observations can exist for which some human intellect cannot conceive a coherent explanation, however complicated”
GNU Terry Pratchett

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Tue Jul 28, 2015 10:31 pm UTC

Another thought would be Haskell. I'm not familiar with it; I looked it over and it was too different from what I was used to to be of immediate use and I had immediate uses. It's definitely a different way of thinking, which seems like what you're looking for.

You tell it what the answer should look like, and it figures out how to get there. Conceptually, it seems to be the "excel goal-finding" of computer programming methods. To me it seems like the opposite of telling the computer what to do and how to do it. So, maybe that'll help.

But in general, computers are syntaxy beasts.

You might also be trying to move too fast. If you start with the Hello World program, and take notes, do you end up understanding it and being able to explain it (at least to yourself?). Could you get it to say "good bye world" or simulate an echo? ("Hello World Hello World")? Maybe smaller steps, which keep reusing the neural pathways you've learned so far, would help you learn remember and use the syntax.

Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Tue Jul 28, 2015 10:44 pm UTC

Angua wrote:Not that this has much to do with coding, but have you looked into learning lojban? You might find it interesting.


It certainly looks interesting. I'm downloading the lojban dictionary, and the GoldenDict installer to use it with, right now. Searching on the "jbovlaste" online dictionary yields relatively few words with the "multiple referenced concepts" problem I mentioned earlier - it seems that the makers of this language did a fine job of avoiding confusion, in that regard. I searched for "love," just to see how the language handles a word with so many similar meanings, and I'm impressed with the way those meanings are handled. So far, it seems to be remarkably similar in structure to the Milandrian language, which I tried developing a while back for a nation in the setting of a game I'm making, especially considering the way prefixes and suffixes can be used to modify the meanings of gloss words. The words, of course, are different; if you, as a non-speaker, were to hear Milandrian spoken, you'd think you were listening to gibberish inspired by the Dutch, French, and German languages and accents... at least, as understood by myself, a person who is really only fluent in American English.

As for the question of whether things are on-topic, I'm not sure how the forum rules would handle this topic. On one hand, I started this thread to look for a programming language that would be good for someone like me to use. On the other hand, defining "someone like me" would require a lot of exploration of a lot of things that aren't necessarily related to programming languages.

I'll have more to type later, such as a response to ucim's post; right now, though, a storm is approaching, and I'll probably lose my internet access for a short while, so I'll only post this for now, and probably edit in the rest later, unless I can make a new post by that point.

EDIT: The storm's over; it was a relatively quick one. I don't know if it's going to be immediately followed by another, but the sky upwind looks relatively calm. Anyway... dang it, I forgot what I was going to address. I guess I'll have to try to remember, while I address what I'm seeing right now.

Anyway, as far as "defining someone like me" goes, should I start another thread, or can I keep the whole conversation in this thread? I'm really not sure how much farther the conversation can go if my own psychology and the things my mind can think of aren't explored, but that would be a huge collection of huge tangents to go on, and those topics might be better answered in another subforum, or even multiple other subforums.

ucim wrote:You tell it what the answer should look like, and it figures out how to get there. Conceptually, it seems to be the "excel goal-finding" of computer programming methods. To me it seems like the opposite of telling the computer what to do and how to do it. So, maybe that'll help.


It might be promising to experiment with, and perhaps help me find out how to better program in other languages, by using the solutions found by Haskell. However, even though my mind seems to work more like a computer than the minds of most people do, I'm rather doubtful that it would work for me, since the designers of Haskell have probably never anticipated someone like me using their language. As such, I'm guessing that whatever mechanism Haskell uses to interpret the programmer's intentions might have a little trouble interpreting my intentions... Still, I'll never know that until I look, and once I'm certain that I won't be interrupted by another storm, I'll start looking.

You might also be trying to move too fast. If you start with the Hello World program, and take notes, do you end up understanding it and being able to explain it (at least to yourself?). Could you get it to say "good bye world" or simulate an echo? ("Hello World Hello World")? Maybe smaller steps, which keep reusing the neural pathways you've learned so far, would help you learn remember and use the syntax.


That could be the case. Whenever I see something I know I'm going to have to understand, I try to understand how it works at a deeper level than I need for the task at hand in and of itself. I'm never satisfied with simply knowing that something works; I always want to know how and why it works, and if I'm designing it, I'll also try to figure out how I can account for anticipated needs beyond the intended usage. For example, during the summer course in which I tried to learn Java, I remember I tried to figure out handling exceptions during my very first assignment to design a program involving user input, which wasn't actually something which would be taught until the course was nearly over.

Given my understanding of cause and effect (the general idea of Chaos Theory was another thing I understood before I had learned of it via any external source), I always prefer having a deductive process that can explain something, to the point at which I actually get uncomfortable if I don't.

Even in the aforementioned game I'm designing, in which the setting is kind of an "anachronistic high/epic fantasy" setting, I like to have a general idea of how the fantastical parts of the setting work. For example, wizards in my game are basically scientists who can apply their knowledge using "energetic plasma" that responds to mental "commands" (basically, it reacts to biochemical processes in the brain, which are activated by various thoughts in a purely mental language), as an alternative to more conventional technology; fantasy materials, such as mythril or adamantium, in addition to many of the aforementioned "energetic plasmas," are allowed in addition to the real-world elements and other stuff (speaking of which, the magic college of "elementalism" is more about chemistry than it is about the classical elements of earth, fire, etc.) by having them exist in parallel spaces that can "overlap" with the "core" space; the deities worshiped in by clerics and similar characters are generally just really powerful wizards, who cast spells for the clerics as favors, to reward them for their service (though the clerics are almost always ignorant of their deities' true natures), and a few entities exist that are more powerful than the worshiped deities, and these entities really don't want to be distracted by the prayers of an army of followers, which is why they try to keep their own existence hidden; etc.. At that point, I'm not sure if my game's setting is really "fantasy," or "sci-fi that looks like fantasy."

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Wed Jul 29, 2015 1:44 am UTC

Moniker Pending wrote:Whenever I see something I know I'm going to have to understand, I try to understand how it works at a deeper level than I need for the task at hand in and of itself.
Maybe you're trying to use your knowledge (to do something useful) too soon. Practical example:

Write a function to add the integers from one to ten. In PHP one solution would be:

Code: Select all

function onetoten()
{   $tobeadded = 1;
    $runningtotal = 0;
    while ($tobeadded < 11)
    {   $runningtotal = $runningtotal + $tobeadded;
        $tobeadded    = $tobeadded + 1;
    }
    return $runningtotal;
}

It's a dumb function, that does a useless thing. But...
1: Could you explain how it worked?
2: Could you modify it to add the integers from one to twenty?
3: When you try #2, are you also trying to look ahead to generalize it? That may be where you trip up.

Because it would still be a dumb function. A useful function would accept an argument (maybe even two arguments, a top and bottom, and maybe even a "count by" argument), check to see that everything was within bounds... have a sensible reply if the inputs were inappropriate... and by now you've gone beyond the purpose of the exercise, which is nothing more than to demonstrate a while loop and play with it a bit.

Syntax notes:
in PHP, statements are terminated by a semicolon, like in English statements are terminated by a period. (Does this syntax rule cause you trouble? If so, does it in English?) Note that the "while" piece is not a complete statement, it's a "dangling clause", which is completed by the statement block following it.

Blocks of code are enclosed in {braces}. You can think of a block of code as "one big statement" which also acts as its own semicolon.

= is an assignment operator, which SETS the left side (which has to be a variable) TO the result of the right side (which can be anything that results in a result).

< is a comparison operator. There are others, but this is the one we're using.

Distractions:
= is not a comparison operator. For that, there is == and === and != and !== and < and <= and > and >= and a few more.

There are other assignment operators, such as += and ++ which can be used as shortcuts, instead of the way I did it.

There are other loops that could be used instead, such as a for loop.

I call these "distractions" right now because while they are certainly important, using them would miss the point of the exercise, which is to recognize that simply changing
while ($tobeadded < 11)
to
while ($tobeadded < 21)
would do the trick. It's the "smallest change possible" that would do it. It's the change that requires the fewest other things.
Spoiler:
Changing it to
while ($tobeadded <= 20)
would also work, but requires a different comparison operator. It's a slightly bigger change.
As you master the "smallest change possible" exercises, you'll start getting the hang of the syntax of the while loop, understand what it does, and internalize it.

Maybe you are just not getting to the point of internalizing the various pieces of syntax because you jump too far too fast, and then are dealing with multple syntactical issues at the same time.

Moniker Pending wrote:At that point, I'm not sure if my game's setting is really "fantasy," or "sci-fi that looks like fantasy."
Doesn't really matter, at least not to the program.

Moniker Pending wrote:Anyway, as far as "defining someone like me" goes, should I start another thread, or can I keep the whole conversation in this thread?
To the extent that it is important for this (programming) conversation, it can stay here. But to the extent that you are talking about yourself for its own sake, it belongs in another thread. Otherwise it too can become a distraction, and remove the focus from your original question.

Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Wed Jul 29, 2015 3:15 am UTC

ucim wrote:(instructions with PHP coding)


I recognize a lot of those things as being similar to how it works in Java, from back when I was still taking the course. I was actually able to get through most of the course, though I did have some delays with most of the assignments, and I passed in many of them late. I mostly got stuck on the final project, and the assignments that dealt with similar concepts. I was trying to make a contact list manager, which would write first names, last names, phone numbers, and email addresses to a file; the final project would have included that, as well as a program to load the file into a program with a GUI, as part of a contact manager. I was able to design the methods in which the information would be entered, and even check to make sure that the information was entered properly; I had done this previously in other assignments, so I knew how it would work, but I couldn't test it with this assignment, since I had to do everything differently from the start in order to accommodate the need to write to a file after the information was entered. Unlike before, I couldn't even get the part where the user entered the information to work. I had no idea how to do this; I tried whatever I could think of for at least a week, and eventually I tried putting some of the methods into another class, and I've already gone over how that went. The class ended while I was still working on that. I tried getting help from the professor, but by the time I had even gotten to the point I had gotten to, the course was basically over, and the only time I had left was the time between the last in-class session and the time the grades would be entered. The professor allowed me to come in during that time, but then he couldn't help me due to some unexpected events that kept him away from the campus.

As for the off-topic discussion, I really don't know what needs to be brought up or not. I was never able to take notes in any of the courses I took, partially due to the delays in translating between words and concepts, partially because my hand would hurt whenever had to write (and especially when I had to write fast, to keep up with the lecture), and partially because I could never tell what was necessary to write down during lectures. Whenever I have to say anything, especially when I can type it instead of say it out loud (given the verbal dyspraxia), I can never say just enough. If I try to be brief, I leave out important details, and then people get mad at me for not mentioning things that are important. Otherwise, I say too much, and I get a tl:dr response from most people. I try to err on saying too much, because I hate cutting corners, and because the kind of people who refuse to read through it are more likely than not to be the kind of people who wouldn't have anything to contribute anyway, unless the discussion is like this one, when we're dealing with multiple academic disciplines... I suppose this would be considered another tangent, but I'm just trying to explain things. Even with the description of all the stuff from my game, I was trying to describe the degree to which I can't stand ambiguity in deductive reasoning, and I just described it in an extremely roundabout manner, involving the lengths I'll go to, coming up with an explanation for the physical laws in a fantasy setting, just to make sure nothing was ambiguous or left to lazy writing.

In terms of programming, I suppose I couldn't successfully make a program with ambiguous code anyway, but to me, the code I've worked with is ambiguous. My mind doesn't work with words; my mind works with concepts, and while concepts can't really be worked with in any direct form while programming, there are several steps in between that would also work better for me than working with words. I'm hoping there's a programming language out there that doesn't use the same semantics that other languages use. Perhaps the idea of a language involving Jungian symbolism is a stretch, even if it still displays the symbols with words. If the words have a clearer connection to the concepts, that would probably help, at least somewhat.

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Wed Jul 29, 2015 4:19 am UTC

re: the PHP instructions - I wasn't trying to teach PHP or loops, I was using it as an example to try to understand your method of comprehension, and where it goes awry.

Moniker Pending wrote:but I couldn't test it with this assignment, since I had to do everything differently from the start in order to accommodate the need to write to a file after the information was entered.
Everything? I'm not familiar with Java, but it seems that if you had the info, you should be able to write a method that takes that (existing) info and writes it to a file. But maybe that's my procedural experience talking; I don't have much OOP experience.

There are two questions: "Where did you go wrong?" and "Why is that the place you went wrong?" Maybe somebody who knows more Java can illuminate those issues. Then you can decide whether it was lack of grok of the concept, or lack of confidence in your grok. Or something else. But the fact you did it once (minus the file write) says you understood something.

Moniker Pending wrote:As for the off-topic discussion, I really don't know what needs to be brought up or not. I was never able to take notes in any of the courses I took [because reasons]...
Just as its needed. It doesn't have to come first; we can ask, especially since we know to, and there's a record of the conversation that can be referred back to. Yeah, not being able to take notes is a big drawback. But the notes are only for you, so nobody's going to get mad if they are too little or too much. It just means you have to slow down (which may work better with an online course where you can pause and rewind).

Moniker Pending wrote:but to me, the code I've worked with is ambiguous.
In what way? The compiler doesn't treat it as ambiguous! However, it is true that there are different "reasonable" ways to express something:

a = a + 1; // seems nonsensical, but that's the way it is.
a .BC. a + 1; // .BC. "becomes". PASCAL does something like this
a <- a + 1; // I've seen this but don't remember where.
(a+1) -> a; // if the above is ok, why not this?
a++; // commonly used

and different interpretations of code depending on the language:

a = 5; // assignment in C, comparison in pl-pgsql
a || b // OR in PHP, cancatanation in pl-pgsql

But this is true in the "real" world too. Those French - they have a different word for everything. :)

Moniker Pending wrote:My mind doesn't work with words; my mind works with concepts
(do you know more than one speaking language? Does it confuse you?)

Just as a thought, consider learning an Oriental (written) language. Do you find it easier to work with their pictogram-like script?

Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby BedderDanu » Wed Jul 29, 2015 7:40 am UTC

What about something like this:

https://logicbox.jahooma.com/

How does learning these concepts compare with what you are used to?

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Wed Jul 29, 2015 5:49 pm UTC

ucim wrote:Everything? I'm not familiar with Java, but it seems that if you had the info, you should be able to write a method that takes that (existing) info and writes it to a file. But maybe that's my procedural experience talking; I don't have much OOP experience.

There are two questions: "Where did you go wrong?" and "Why is that the place you went wrong?" Maybe somebody who knows more Java can illuminate those issues. Then you can decide whether it was lack of grok of the concept, or lack of confidence in your grok. Or something else. But the fact you did it once (minus the file write) says you understood something.


I don't remember much of what I was doing, but I'll do my best. According to the professor's instructions, the variables had to be declared differently, since the assigned project would require the program to be able to take multiple new contacts without having to rerun the program, and then write it all to a file when it was finished. In addition, the methods for entering and checking user input, which he partially wrote for us, weren't static methods, but the "main" method had to be static. I remember reading somewhere that, in order for non-static methods to be called in a static method, the non-static methods had to be in a separate class, and so I was trying to figure out how to cal methods between classes. I had no idea how to do that, because as I've said in the first post, I could find instructions, and I could find examples of code, but I couldn't find both in the same place. I couldn't tell which pieces of code would perform which part of what I was supposed to do, and that's not even getting into the fact that I found multiple different sets of instructions. That sheds some light on the answer to your next question, about how the code is ambiguous to me, but it might be a little more complicated than that. The last couple of months have been hazy, and it's hard to remember the details of things, given the insomnia I started having when I started with all of this introspection (in addition to the sleep apnea I've always had).

Now, given the way my mind thinks, I'll elaborate a little on what I meant by a programming language involving "Jungian symbolism." Perhaps the variables could be declared as "personae," and those variables could be modified with symbols of Jungian archetypes, somehow. Granted, I've only studied Jungian symbolism for a couple of months now, and I've already expanded on the dream analysis process to include perspectives that aren't considered in the "official" practice (and the expansions I've made actually work), so I have to acknowledge the fact that any Jungian programming language might be a little too limited, if it works the way Jungian psychoanalysis is supposed to.

Just as its needed. It doesn't have to come first; we can ask, especially since we know to, and there's a record of the conversation that can be referred back to.


Well, if we do things that way, it might help. It's going to take some getting used to on my part, though...

Yeah, not being able to take notes is a big drawback. But the notes are only for you, so nobody's going to get mad if they are too little or too much. It just means you have to slow down (which may work better with an online course where you can pause and rewind).


Unfortunately, the courses at my college aren't always online. In addition, it's tricky for me to take online courses. If I take them on their own, it's fine, but if I mix online and in-person courses, I tend to forget about the fact that I'm actually in an online course, since I'm paying so much attention to the in-person courses.

(do you know more than one speaking language? Does it confuse you?)

Just as a thought, consider learning an Oriental (written) language. Do you find it easier to work with their pictogram-like script?

Jose


It's actually pretty hard for me to figure out oriental pictogram script, even going beyond the fact that I'm only fluent in American English. The scenic archetypal visualization that occurs in my thought process, between the abstract visuals/music and the recollection of contexts in which the concept has appeared in my life, is more "romantic-inspired," like a realistic (or semi-realistic, perhaps with some mythological elements, but the point is that it's not abstract in its style) western-style painting of a scene in a story, perhaps with various lighting for emphasis, consistent with the themes of the romantic art period of the late 18th and early 19th centuries, as well as similar art like that found in Dungeon and Dragons books. In the abstract art and music stage of my thinking, it's more like a broad brush stroke of color, or visuals like what you'd see on some of the more "avant-garde" styles of default desktop backgrounds, paired with some instrumentals, seemingly more representative of emotions triggered by the concept than any objective representation of the concept itself.

BedderDanu wrote:What about something like this:

https://logicbox.jahooma.com/

How does learning these concepts compare with what you are used to?


I'm still rather groggy from getting up (it takes a few hours before I'm ready to take on the day); I'll add that to the list of things to look into.

Demki
Posts: 199
Joined: Fri Nov 30, 2012 9:29 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Demki » Wed Jul 29, 2015 8:10 pm UTC

By what you wrote about static vs non-static methods I see you have a problem grasping basic concepts of object oriented programming, specifically class methods vs object methods.
Class methods, labeled "static" are general methods specific to a class that do not require an instance of an object, and in java are called by ClassName.methodName(args)
Object methods, not labeled with "static", are object that require an instance of an object, and in java are called with objectInstanceReference.methodName(args).
If you ignore non-static methods in java you basically turn it in some sense into a procedural language like C or PHP, but more verbose.
Try writing the same program with only static methods and see if you can do it better.

BTW object references are generally obtained with the "new" keyword, or via a static generator method.

Edit: try reading oracle's java tutorial for better explanation of these concepts, or maybe learning python(again via a tutorial step by step).

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Wed Jul 29, 2015 9:00 pm UTC

Demki wrote:By what you wrote about static vs non-static methods I see you have a problem grasping basic concepts of object oriented programming, specifically class methods vs object methods.
Class methods, labeled "static" are general methods specific to a class that do not require an instance of an object, and in java are called by ClassName.methodName(args)
Object methods, not labeled with "static", are object that require an instance of an object, and in java are called with objectInstanceReference.methodName(args).
If you ignore non-static methods in java you basically turn it in some sense into a procedural language like C or PHP, but more verbose.


I... have no idea what any of that means. I can try to interpret what you're saying there, and I can think of ideas of what you mean, but I honestly have no clue if any of those ideas are accurate. I've tried figuring out what an "object" is in programming terms for a long time, but I've gotten a lot of conflicting information over the years, and every time I think I understand it, I find out soon afterward that I was wrong. I'd try getting a basic definition, but the definition I'd get wasn't detailed or specific enough to give me any real idea of what an object is; when I get a more specific definition, I'll usually hear that it's either a variable, or something you'd see on a GUI, or something like that, and I can't find any consistent information anywhere. I have a bunch of books on the subject, and they all give me contradictory information, just like I'd get on the internet. I was never given any clear explanation in the course, either; I think the course, despite being an entry-level course, was intended for those who have prior programming experience. Honestly, with all of that to consider, I have to wonder how anyone learns how to program...

Try writing the same program with only static methods and see if you can do it better.


I tried to do that, actually; NetBeans kept telling me that the code was filled with errors when I'd try to do that. I'm not sure what I would have needed to do in order to make it work, but I tried a lot of things, and I don't really remember all of what I tried. The code that the professor required us to use in the program had the methods declared as non-static, so I tried to make that work.

Edit: try reading oracle's java tutorial for better explanation of these concepts, or maybe learning python(again via a tutorial step by step).


I've been there, I've been to stackoverflow, and I've been to a great variety of other sites in trying to figure out the solutions to my problems. I remember, back when I was still in the course, I'd have three or more Firefox browser windows open at a time, with each window used to hold all the tabs for the pages I'd have open at a time to explain everything I needed to know about a particular concept, while NetBeans was open and I was working on the program I had to make. It wasn't that intense at the beginning of the course; for the first half of that course, I'd even insert some humor into the program's output or comments, just to keep things interesting. I even did a parody of the "Kitten Mittens" advertisement from "It's Always Sunny in Philadelphia," in the output of a program designed to convert from Celsius to Fahrenheit. Then, things got extremely difficult almost instantly, once we started working with arrays, and doing tricks with loops (as in, using loops for reasons other than a basic repetition). I eventually figured out enough of that stuff to get things working for the assignments, but I never figured out how to use arrays in any way beyond the most simple uses for them, and it's been long enough since then that I've forgotten even that. I was able to get a basic idea of how to throw and catch exceptions for the purpose of the assignments, but I'm still not sure if I ever really understood how that works, and I know I didn't understand enough to go beyond what the assignment called for.

Really, most of the "programming experience" I've had outside of the courses at this college (I also took an HTML course) is in editing XML and hexadecimal data, to modify values in a few computer games I've played, as well as trying to fix a few errors in the scripts in some Bethesda games, and in some mods for said games.

User avatar
quintopia
Posts: 2906
Joined: Fri Nov 17, 2006 2:53 am UTC
Location: atlanta, ga

Re: Esoteric programming languages for an esoteric mind?

Postby quintopia » Thu Jul 30, 2015 2:23 am UTC

Second thought is to try studio.code.org. The language looks more like a lego set or jigsaw puzzle than a mess of words, and it will easily build the fundamental concepts in imperative programming.

First thought was a self-plug. http://esolangs.org/wiki/Spiral is a very visuospatial language. Loops are literal loops. Conditionals are big X's, as if to indicate "don't go this way unless you meet the condition". It is, of course, very low-level, so you have to do all your own abstraction. I had built an IDE for it at one point, but I lost most of it in a hard drive crash. I'm not sure what remains deep in the bowels of that old computer out there. I'd probably consider rebuilding it if I knew someone were planning to use it.

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Thu Jul 30, 2015 3:50 am UTC

quintopia wrote:Second thought is to try studio.code.org. The language looks more like a lego set or jigsaw puzzle than a mess of words, and it will easily build the fundamental concepts in imperative programming.

First thought was a self-plug. http://esolangs.org/wiki/Spiral is a very visuospatial language. Loops are literal loops. Conditionals are big X's, as if to indicate "don't go this way unless you meet the condition". It is, of course, very low-level, so you have to do all your own abstraction. I had built an IDE for it at one point, but I lost most of it in a hard drive crash. I'm not sure what remains deep in the bowels of that old computer out there. I'd probably consider rebuilding it if I knew someone were planning to use it.


Well, to be fair - and this is somewhat embarrassing, given what I've already said, and how, in retrospect, it's obvious people would interpret it all the way you seem to have - I don't think the problem is the fact that the languages use words, or otherwise things that are composed of characters one could type on a keyboard. The problem is that it's hard to figure out what the code is supposed to do. Sure, my mind works with concepts as opposed to words, but I can still try to communicate with words, because I can figure out the concepts that correspond with the words. From what you've described, and from what I'm seeing on the page you've linked to, Spiral probably would be worse for me, since there's even less of a clear connection between the code and the concepts. For example, with the conditionals that are only used under certain conditions, I'd probably find the connection easier to figure out if the conditionals were represented by one of the many images depicting the story of "Horatius at the Bridge," or some other way to depict that scene (even words) with the required condition being a Roman soldier, since Horatius was on the side of the Romans during that battle against the invading Clusian army (alternatively, a Clusian soldier could indicate a condition for the conditional to not be used, if it would otherwise be used; however, I'm not really sure how it would be easy to tell the difference between a Roman soldier and a Clusian soldier, unless it were specified by naming the soldier as one or the other). That would be closer to the "scenic archetypal visualization" step of my thought process than what I'm seeing on the page you've linked to; any closer to the "concept" stage, and you'd be getting to the point where anything that could be displayed would be harder to understand.

By the time I get to the "abstract art and music" stage, I already know what the concept I'm about to work with is; I'm just turning the thought into a form that is closer to a form I can handle best. It's like when you eat food; if you could see the food as it looks while it's going through you, you might not be able to identify what the food was (nor would you find it very appetizing), but if the food hadn't been chewed up and such, you wouldn't be able to digest the food. In other words, I'd still need to recognize what I'm seeing; the translation from what I see to what I can work with has to happen in my mind, not before my mind is aware of it. Looking at the example code on the page you've linked to, I wouldn't have any idea of what I was looking at; even the "Hello World" code is something I would have mistaken for weird ASCII art, instead of code (before you ask: no, I don't think I'd do better with a language using ASCII art as code).

At that point, it would probably be best for me to clarify what I want, in a different way than I've stated already: I want a programming language with a clear connection between the code and what the code does. Going with the "food" metaphor, what I saw in Java was like looking at unidentifiable food, the kind where you can't figure out what it will probably taste like, what nutritional value it has, whether or not it will trigger an allergic reaction or something, and sometimes, whether or not it's actually edible.

User avatar
quintopia
Posts: 2906
Joined: Fri Nov 17, 2006 2:53 am UTC
Location: atlanta, ga

Re: Esoteric programming languages for an esoteric mind?

Postby quintopia » Thu Jul 30, 2015 4:39 am UTC

This is why my first thought was listed second. It seemed a worse fit for you than the second thought. Please go look at the code.org courses.

User avatar
Xanthir
My HERO!!!
Posts: 5426
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby Xanthir » Thu Jul 30, 2015 6:17 am UTC

Heh, I wonder how you might react to the Shakespeare esolang.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Thu Jul 30, 2015 2:10 pm UTC

quintopia wrote:This is why my first thought was listed second. It seemed a worse fit for you than the second thought. Please go look at the code.org courses.


Ah, it seems I missed your second thought...My mother is trying to "cure" my recent insomnia in her usual manner of "forcing me to try to ignore the symptoms." At first, I'd lay in bed awake for hours, with nothing to do, and it was insufferable, but I'm starting to get to sleep sooner, albeit with some medical changes to help. Now that I'm actually sleeping for more than 3 hours at night again, the sleep apnea is starting to affect me again, and I'm even more exhausted the following day than I was when I only got 1-3 hours of sleep during the night, and so my focus throughout the day is even less than it would have been if I hadn't slept as much. Incidentally, I just got up about half an hour ago, so I won't be able to put much thought into looking at the code.org courses, or this post, right now.

Xanthir wrote:Heh, I wonder how you might react to the Shakespeare esolang.


It looks interesting, so far. If I can get used to it, it might actually work better than most other languages. It might not be ideal, but right now, it looks pretty good. Maybe when I wake up a little more in several hours, I'll be able to put more thought into trying to figure out how good it'll be for me.

User avatar
Sizik
Posts: 1260
Joined: Wed Aug 27, 2008 3:48 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Sizik » Thu Jul 30, 2015 6:15 pm UTC

Moniker Pending wrote:
Demki wrote:By what you wrote about static vs non-static methods I see you have a problem grasping basic concepts of object oriented programming, specifically class methods vs object methods.
Class methods, labeled "static" are general methods specific to a class that do not require an instance of an object, and in java are called by ClassName.methodName(args)
Object methods, not labeled with "static", are object that require an instance of an object, and in java are called with objectInstanceReference.methodName(args).
If you ignore non-static methods in java you basically turn it in some sense into a procedural language like C or PHP, but more verbose.


I... have no idea what any of that means. I can try to interpret what you're saying there, and I can think of ideas of what you mean, but I honestly have no clue if any of those ideas are accurate. I've tried figuring out what an "object" is in programming terms for a long time, but I've gotten a lot of conflicting information over the years, and every time I think I understand it, I find out soon afterward that I was wrong. I'd try getting a basic definition, but the definition I'd get wasn't detailed or specific enough to give me any real idea of what an object is; when I get a more specific definition, I'll usually hear that it's either a variable, or something you'd see on a GUI, or something like that, and I can't find any consistent information anywhere. I have a bunch of books on the subject, and they all give me contradictory information, just like I'd get on the internet. I was never given any clear explanation in the course, either; I think the course, despite being an entry-level course, was intended for those who have prior programming experience. Honestly, with all of that to consider, I have to wonder how anyone learns how to program...


There's two ways you can think about objects. One is how they're actually implemented in the programming language, where "objects" are typically just data structures coupled with functions (often called "methods") that operate on the data. The other way is how they're used as an abstraction in object-oriented programming, where an object represents a concrete "thing" whose behavior your program is modelling.

Perhaps you would do well taking a look at a lower-level language like C, where there's a lot less abstraction about what the computer's actually doing with the code you write.
she/they
gmalivuk wrote:
King Author wrote:If space (rather, distance) is an illusion, it'd be possible for one meta-me to experience both body's sensory inputs.
Yes. And if wishes were horses, wishing wells would fill up very quickly with drowned horses.

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby BedderDanu » Thu Jul 30, 2015 6:25 pm UTC

I'm trying to figure out what you are expecting in a programming language. Would you be able to solve the following "Homework Assignment," for a lack of a better term?

Code: Select all

Print the numbers from 1 to 100, but if the number is divisible by 3, print the word "Fizz". If the number is divisible by 5, print the word "Buzz". If the number is divisible by both 3 and 5, print the word "Fizz Buzz"


Don't try to use java for this, make up your own (incomplete) language that is as clear as you want it to be. I'll put an example of me solving this below, but try not to look unless you really need to

Spoiler:

Code: Select all

int $i = 1;
While ($i -leq 100)
{
  if(($i % 15) -eq 0)
  {
    write "Fizz Buzz";
    $i++;
    continue;
  }
  if(($i % 5) -eq 0)
  {
    write "Fizz";
    $i++;
    continue;
  }
  if(($i % 3) -eq 0)
  {
    write "Buzz";
    $i++;
    continue;
  }
  write $i;
  $i++;
}

Loosely based on powershell.


Based on how you solve this, it should tell what you are looking for in a language.

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Fri Jul 31, 2015 3:51 am UTC

Sizik wrote:There's two ways you can think about objects. One is how they're actually implemented in the programming language, where "objects" are typically just data structures coupled with functions (often called "methods") that operate on the data. The other way is how they're used as an abstraction in object-oriented programming, where an object represents a concrete "thing" whose behavior your program is modelling.


So... basically, and object is something used by the program... In that case, wouldn't all usable languages use objects? What would be the distinction between an "object-oriented" language vs. a language that isn't "object-oriented?"

Perhaps you would do well taking a look at a lower-level language like C, where there's a lot less abstraction about what the computer's actually doing with the code you write.


I've been told that C would be a good "gateway" language to learn, and so I've wanted to try C for a while, now, but I haven't had the chance to work with it yet. I mean, I can look up instructions, but in order to really learn it, I'd have to work with it, and it's hard to use it without a goal to work toward. Unless I'm learning it as part of a course at school, I don't imagine I'd be able to set a realistic goal for myself. I'd set my standards too high from the beginning, by trying to come up with something I could actually use, and I'd never be able to learn the basics. Unfortunately, the school I go to doesn't have a C course. I'm currently signed up for a C# course in the Fall, but I'm not sure if I'm should drop it or not.

BedderDanu wrote:I'm trying to figure out what you are expecting in a programming language. Would you be able to solve the following "Homework Assignment," for a lack of a better term?

Code: Select all

Print the numbers from 1 to 100, but if the number is divisible by 3, print the word "Fizz". If the number is divisible by 5, print the word "Buzz". If the number is divisible by both 3 and 5, print the word "Fizz Buzz"


Don't try to use java for this, make up your own (incomplete) language that is as clear as you want it to be. I'll put an example of me solving this below, but try not to look unless you really need to.


For now, it'll have to be different from what I'm expecting, for reasons explained below...

Code: Select all

Create Task: FizzBuzz;

FizzBuzz = {
Create Variable (Integer): Number;
Value (Number) = 1;
While (Value (Number) <= 100), do {
Print Number;
Value (Number) changes to Value (Number) + 1;
If Value (Number) is divisible by 3, do {
Print Nonvar (String) "Fizz";
}
If Value (Number) is divisible by 5, do {
Print Nonvar (String) "Buzz";
}
}
If Value (Number) > 100, do {
Cease Task(Program FizzBuzz);
}
}

Run FizzBuzz;

Await User Input(Exit);


(For clarification, the code "Nonvar" would specify the strings as being used only in that instance, and thus not needing to be stored in a variable. Also, the difference between "Cease Task" and "Await User Input(Exit)" is that "Cease Task" would stop the "FizzBuzz" task, but not end the program, thus allowing the application to stay open until the user chooses to exit the application.)

I know, it might not be all that different from code in a more conventional language, but that's what I'm used to. When I'm imagining high-level code, I don't really have any concept of much else. Even the Shakespeare language that Xanthir linked to seems like it would be too good to be true; even if I have no reason to conclude that it wouldn't work, it doesn't look like the "syntax beast" that I'm used to thinking of as being what code would have to be in order for it to compile into something a computer could use. I know that the code I'm used to isn't something I can really work with, but it's all I know of what a computer can work with, aside from hex/binary, and that's even harder for me to work with. Like ucim/Jose (speaking of which: ucim/Jose, which name would you prefer I address you with?) said, "... in general, computers are syntaxy beasts."

Maybe if I had the opportunity to get used to esoteric languages, I'd be better able to make up code that would represent code that works for myself. I'm even having trouble putting the moral system I've come up with into a presentable form, because no one else has made anything like it. Doing that would probably involve truth tables and logical expressions involving both boolean and trinary variables (hypothetically, booleans could be used exclusively, but trinary variables would involve a lot less clutter on the truth tables, when applicable), but I've never had to use truth tables outside of a course on discrete mathematics, and I'm not sure how I'd describe the connection between the truth tables and the many paragraphs I'd have to type up about the system's workings. It took long enough coming up with the concepts themselves; it wasn't hard once I had something to work with, but still, it took a while to figure out specifically what needed to be addressed in the first place. The point is, I can understand that stuff now, but back when I only had more conventional systems to work with, it was hard to imagine that there could even be anything other than something similar to what I had worked with already.

User avatar
ahammel
My Little Cabbage
Posts: 2135
Joined: Mon Jan 30, 2012 12:46 am UTC
Location: Vancouver BC
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby ahammel » Fri Jul 31, 2015 4:46 am UTC

Moniker Pending wrote:
Sizik wrote:There's two ways you can think about objects. One is how they're actually implemented in the programming language, where "objects" are typically just data structures coupled with functions (often called "methods") that operate on the data. The other way is how they're used as an abstraction in object-oriented programming, where an object represents a concrete "thing" whose behavior your program is modelling.


So... basically, and object is something used by the program... In that case, wouldn't all usable languages use objects? What would be the distinction between an "object-oriented" language vs. a language that isn't "object-oriented?"
Generally, "object" doesn't refer to raw values like integers or booleans or memory addresses, but to more complicated thingies that include internal state and named variables, and come bundled together with functions that can act on the data stored in the object.

Most languages have objects (C, notably, doesn't), but in an object oriented language the programmer spends most of their time creating classes of objects, or manipulating instances of those classes. If a object oriented programmer wanted to write, say, an aquarium simulator, she would probably define a class of objects named Aquarium and another class called Fish. The internal state of an Aquarium would include a set of Fish, and the internal state of a Fish would include, for instance, a number indicating it's health. Fish would include a method called Fish.eat(food), which would have some effect on the its health, depending on the properties of the food. Running the programmer would involve creating an instance of Aquarium, populating it with some Fish, and the calling the appropriate Aquarium methods to introduce food and select Fish instances to eat it.

Code: Select all

Create Task: FizzBuzz;

FizzBuzz = {
Create Variable (Integer): Number;
Value (Number) = 1;
While (Value (Number) <= 100), do {
Print Number;
Value (Number) changes to Value (Number) + 1;
If Value (Number) is divisible by 3, do {
Print Nonvar (String) "Fizz";
}
If Value (Number) is divisible by 5, do {
Print Nonvar (String) "Buzz";
}
}
If Value (Number) > 100, do {
Cease Task(Program FizzBuzz);
}
}

Run FizzBuzz;

Await User Input(Exit);
This looks like it prints

Code: Select all

1
2
3
Fizz
4
5
Buzz
...
15
Fizz
Buzz
16
...

Which doesn't satisfy the spec.

At any rate, I'm confused as to what features your imaginary language has but which existing programming languages lack.
He/Him/His/Alex
God damn these electric sex pants!

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby BedderDanu » Fri Jul 31, 2015 5:22 am UTC

ahammel wrote:This looks like it prints

Code: Select all

1
2
3
Fizz
4
5
Buzz
...
15
Fizz
Buzz
16
...

Which doesn't satisfy the spec.

At any rate, I'm confused as to what features your imaginary language has but which existing programming languages lack.


The problem is probably my fault, as he said he needs improved clarity. I missed a few key words...

Let me try this again:

Code: Select all

Print the numbers from 1 to 100. However, if the number is divisible by 3, print the word "Fizz" instead of the number. If the number is divisible by 5, print the word "Buzz" instead of the number. If the number is divisible by both 3 and 5, print "Fizz Buzz" instead of any of the above.


That should be most explicit (although it pretty much solves the problem outright)

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Fri Jul 31, 2015 2:51 pm UTC

@Monker Pending: re: Jose/ucim; you can use either to address me; by signing "Jose" you are invited to call me that (but needn't). (You can think of it as being on a first name basis). For official use (within an actual quote block) "ucim" is better, for consistency, since it's what the system does.

re: your solution to fizz-buzz. Almost right. But that's not the important part - fizz-buzz is a silly program anyway. You're printing fizz (and/or buzz) in addition to the number rather than instead of it. Did you do it this way because you didn't understand the directions, or because you didn't understand the program concepts?
Spoiler:
This is one of the issues I have when I'm learning something new and it doesn't work. I can't tell whether I "don't get it" (but think I do), or I get it but there's maybe a comma in the wrong place that I keep missing.
In any case, it seems to me that you grok the basic concept of the loop well enough, and in the conventional sense.

Now for the syntaxy stuff. How would you fix the program to match the (clarified) spec? Here's where you have to pay attention to niggly things like what order to do the tests in, whether or not to skip steps, ("if...otherwise"), and whether newlines are automatically part of the output (pl-pgsql) or not (C).

Does fixing these things awaken the syntax monster?

Can you think of a programming task for which the syntax monster rears its ugly head? How would your ideal language solve it?

Moniker Pending wrote:I'm even having trouble putting the moral system I've come up with into a presentable form
Responding to "even having trouble with...", I'm not sure if (explaining) morality has much to do with programming, as morals are inherently grey-area, and programming is inherently black and white. Round peg, square hole.

Moniker Pending wrote:What would be the distinction between an "object-oriented" language vs. a language that isn't "object-oriented?"
(Note: IANAOOPP.) As I see it, in a procedural approach, you create variables (which can include structs and arrays), stuff them with values, and write procedures that tell the computer what to do with these values. The procedures themselves are agnostic; they don't "belong" to the data, they are just there. They manipulate the data.

In an object oriented approach, you group your data into analogs of "things" you're working with and bind the data to the procedures that apply to it. So, in the end, this bundle is an "object" and it knows how to do things to itself.
Spoiler:
More precisely, how to do things to instances of itself.
You'd create an object called "fizznumber", and a procedure called "display" which would print the value contained in that ("this") fizznumber; that procedure would know to print "fizz" or "buzz" or 7 as appropriate. Then, you say "Fizznumber, print thyself!" in a loop, and the fizznumber object does whatever it must do. But only fizznumbers know how to do that. ComplexNumbers would have a different "display" function that belongs only to them, and would (for example) print 4+3i or 5i or 8 depending on its value.

The advantage to OOP is that the "outer" part of the program doesn't have to worry about how to display (for example) the thing in question. It just tells the object to display itself. Ditto all other procedures (adding to itself, doing a fourier transform on itself, whatever). It keeps code isolated.

The disadvantage (to some) is that there is (or appears to be) more programmer overhead in designing an OOP program. But maybe that's just because it happened after I already learned how to program procedurally.

Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.

User avatar
Quercus
Posts: 1810
Joined: Thu Sep 19, 2013 12:22 pm UTC
Location: London, UK
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby Quercus » Fri Jul 31, 2015 4:05 pm UTC

@Moniker Pending There's an analogy that I use to think about OOP, which might help you to grok it (be aware that I'm a newbie at programming, so it may not be the most precise analogy - but it seems to work for me).

I think of objects as widgets that are capable of doing particular things. A class is a factory that makes a particular type of widget. It can produce widgets that have different specifications, depending on what attributes you feed it, but it will always produce the same type of widget (think of ordering a car, or a pc - you can specify what exact hard drive/interior finish you want, but you can't ask a car factory to make you a toaster). Instantiating an object is asking a factory (class) to make you a widget with particular specs. Inheritance is like taking a particular sort of widget (the parent class) and modding it to make it do something different (the child class).

In object oriented programming I start by asking "what sort of widgets am I going to need? What do I need them to be able to do?"

On the other hand, in procedural programming you don't design the factories - you pick off the shelf parts (data structures), stuff data into them and then do things to them using tools. You can design and reuse the tools (functions), but they stay separate from your data, unlike in OOP where you bundle the data along with the tools to work with it into a mass-producible widget (object).

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Fri Jul 31, 2015 6:33 pm UTC

(I don't know if there's a character limit for posts here, but I keep finding new posts to this thread while I'm still working on typing this post, and I'm not sure if I can address all of the new posts while I'm only able to type things up in between my other activities today. I'll have to limit what I address, or I'll never finish this post - sorry, anyone who posted after ucim.)

ahammel wrote:Most languages have objects (C, notably, doesn't), but in an object oriented language the programmer spends most of their time creating classes of objects, or manipulating instances of those classes. If a object oriented programmer wanted to write, say, an aquarium simulator, she would probably define a class of objects named Aquarium and another class called Fish. The internal state of an Aquarium would include a set of Fish, and the internal state of a Fish would include, for instance, a number indicating it's health. Fish would include a method called Fish.eat(food), which would have some effect on the its health, depending on the properties of the food. Running the programmer would involve creating an instance of Aquarium, populating it with some Fish, and the calling the appropriate Aquarium methods to introduce food and select Fish instances to eat it.


Okay, so... how would a non-object-oriented language work? I can't really imagine any other way for a high-level language to work (except for XML, but that's more for storing data than actually manipulating data anyway, as far as I can tell); I can imagine manipulating the data itself, but that seems like more like the way a low-level language would work. Unless I know of an alternative for high-level programming languages, it'll seem to me like that's just how a high-level programming language works. If I think that it's just how they work anyway, I'm not going to see why the "object-oriented" label even needs to be applied. You could say that the way XML works is an alternative, but as far as I can tell, they're not even used for the same thing, so in my mind, it's not an alternative to an object-oriented language, but a language for a separate purpose entirely. Then again, like I said, I've never had the chance to work with anything else; I really don't know.

I once tried learning assembly under the guidance of a therapist, by buying a textbook on it, learning the concepts within, and then trying to teach and quiz the therapist about the concepts, because the therapist said I'd remember the stuff I learned better if I could learn how to teach it. I don't think he really understood the concept of a programming language, though, which is why he didn't require me to actually write any code or try to assemble anything, and why he had me learn about assembly after I mentioned once that I might be able to learn another language better if I knew assembly. By the time I stopped working with him altogether (different issue), I hadn't even obtained any program I could use to test anything I had written, nor had I written anything, and I had learned a bunch of stuff that I would eventually forget anyway, which took away the whole point of what I was doing.

This looks like it prints (code for output)

Which doesn't satisfy the spec.


As BedderDanu noted after your post, the instructions weren't exactly clear. I thought that the words should be printed in addition to the numbers; admittedly, I wouldn't have satisfied the specifications anyway, given the line returns, which would have meant that the code wouldn't print out the output as desired. After all, "Fizz Buzz" is on one line, and as you realized, the "program" I wrote would print out "Fizz" and "Buzz" on a separate line. Since I'm mostly used to working with languages I don't really understand, I'm used to trying things out to see if they work, and then making adjustments when things don't work. Without a compiler, I can't really do that. Not to mention, I typed that up while I was a little distracted by things going on around me (a monthly social gathering, not a job; I don't have a job right now), so I couldn't really put much thought into making sure it would work with what I had available, and like I'll reiterate, it didn't look very productive anyway, so I didn't really put much thought into it anyway.

To make it work right, I would most likely declare "Fizz," "Buzz," and "Fizz Buzz" as String Variables, and alter the currently-existing "if" statements to print the "Fizz" and "Buzz" variables when appropriate, but not if both conditions were true; for when both conditions were true, there would be another "if" statement which, once activated, would print "Fizz Buzz" (Note that I'm adding punctuation within the quotation marks in this paragraph, since it's grammatically correct; if I was typing up actual code, I'd leave out the commas, of course).

An alternative, since we're working with an imaginary language anyway, is to have a way to print "Fizz" and "Buzz" without making a new line, like maybe "AddToPreviousLine" or something, which would add "Fizz" and/or "Buzz" to the line that was previously printed, instead of starting a new line. Otherwise, perhaps the line could stay "current," adding "Fizz" and/or "Buzz" before the applicable line was printed at all, or at least before a new line was started.

At any rate, I'm confused as to what features your imaginary language has but which existing programming languages lack.


Like I said, I'm really not used to typing any code other than Java, so even though Java doesn't work for me, I really have no idea of how anything else would work for that purpose, let alone how anything else would work for me. As of right now, the only problem I can identify is that the code is too vague in its purpose, though I suspect that I'll identify more problems if I manage to get a better understanding of other ways in which a programming language might work.

ucim wrote:@Monker Pending: re: Jose/ucim; you can use either to address me; by signing "Jose" you are invited to call me that (but needn't). (You can think of it as being on a first name basis). For official use (within an actual quote block) "ucim" is better, for consistency, since it's what the system does.


All right. Since we just met, I'll probably use "ucim" for now.

re: your solution to fizz-buzz. Almost right. But that's not the important part - fizz-buzz is a silly program anyway. You're printing fizz (and/or buzz) in addition to the number rather than instead of it. Did you do it this way because you didn't understand the directions, or because you didn't understand the program concepts?

...

Now for the syntaxy stuff. How would you fix the program to match the (clarified) spec? Here's where you have to pay attention to niggly things like what order to do the tests in, whether or not to skip steps, ("if...otherwise"), and whether newlines are automatically part of the output (pl-pgsql) or not (C).


My answer is described above, in my response to the second quote.

Does fixing these things awaken the syntax monster?


Not really; it's basic enough that I was able to figure out how to do it in Java easily enough. It was a lot harder for me to figure out how to print from an array of strings, though. Ultimately, it's hard to place exactly where the problem of "understanding syntax" begins, since the beginning point changes as I learn more. Still, it was extremely difficult and migraine-inducing for me to try to figure out what to do for the final project and related assignments in the course I took, and I never actually did manage to figure out how to get the code working, even after over a week of trying to figure out how to accomplish the same step. By comparison, discussing metaphysics with a student of Nietzschean philosophy would be relaxing.

Can you think of a programming task for which the syntax monster rears its ugly head? How would your ideal language solve it?


If we're going with a completely imaginary "ideal language" for me, based on what little I understand of programming languages right now, we'd need a computer that could understand my prose anyway (which, admittedly, is more strict in syntax and semantics than the prose of most people, which gets hard when discussing metaphysics in formal science, since there really isn't a standardized set of terms for that), and at that point, we'd have a computer that can program itself. Other than that, I really don't know - I know the most about my own psychology, which is several orders of magnitude better than what the doctors can understand (which still doesn't mean much overall, but it's a lot when modern psychology has deductively concluded that a mind like mine can't possibly exist), but I don't know a lot about programming, and I was hoping that the knowledge of the people here could "bridge the gap" somehow.

Responding to "even having trouble with...", I'm not sure if (explaining) morality has much to do with programming, as morals are inherently grey-area, and programming is inherently black and white. Round peg, square hole.


Well, that's because no other system of morality has actually worked from an objective standpoint. With an objective system that actually works, morality actually can be "black and white." As far as my understanding goes, morality is more "black and white" than programming is, because with my system, I can actually understand how and why something is right or wrong, and figure things out on my own, whereas I can't figure out how or why some code works, and other code doesn't.

(Note: IANAOOPP.) As I see it, in a procedural approach, you create variables (which can include structs and arrays), stuff them with values, and write procedures that tell the computer what to do with these values. The procedures themselves are agnostic; they don't "belong" to the data, they are just there. They manipulate the data.


Two questions:

1. What is IANAOOPP?
2. When you say "data," are you referring to the stuff being manipulated, or something else? I've always considered "data" to refer to the things being manipulated, but I really don't know for sure.

In an object oriented approach, you group your data into analogs of "things" you're working with and bind the data to the procedures that apply to it. So, in the end, this bundle is an "object" and it knows how to do things to itself.
Spoiler:
More precisely, how to do things to instances of itself.
You'd create an object called "fizznumber", and a procedure called "display" which would print the value contained in that ("this") fizznumber; that procedure would know to print "fizz" or "buzz" or 7 as appropriate. Then, you say "Fizznumber, print thyself!" in a loop, and the fizznumber object does whatever it must do. But only fizznumbers know how to do that. ComplexNumbers would have a different "display" function that belongs only to them, and would (for example) print 4+3i or 5i or 8 depending on its value.


So, an object is like a particular thing that a program does, as part of its larger function?

The advantage to OOP is that the "outer" part of the program doesn't have to worry about how to display (for example) the thing in question. It just tells the object to display itself. Ditto all other procedures (adding to itself, doing a fourier transform on itself, whatever). It keeps code isolated.

The disadvantage (to some) is that there is (or appears to be) more programmer overhead in designing an OOP program. But maybe that's just because it happened after I already learned how to program procedurally.


Huh... So, if someone preferred working with a unified system of logic where all parts operate without conflict under the same basic ruleset (which might be expanded on in a more specific subsystem, but never with any contradictions to the basic ruleset), instead of collections of smaller ad hoc systems that need further modifications to work together in a larger system, and are not unified by default (like object-oriented languages seem to work with, based on your description), would a procedural language be better? 'Cause I definitely prefer unified systems of logic.

In fact, the "collections of smaller ad hoc systems" thing seems to be what previous moral systems worked with, and that's actually one of the biggest problems with those systems.

User avatar
Xanthir
My HERO!!!
Posts: 5426
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby Xanthir » Fri Jul 31, 2015 6:58 pm UTC

Moniker Pending wrote:(I don't know if there's a character limit for posts here, but I keep finding new posts to this thread while I'm still working on typing this post, and I'm not sure if I can address all of the new posts while I'm only able to type things up in between my other activities today. I'll have to limit what I address, or I'll never finish this post - sorry, anyone who posted after ucim.)

ahammel wrote:Most languages have objects (C, notably, doesn't), but in an object oriented language the programmer spends most of their time creating classes of objects, or manipulating instances of those classes. If a object oriented programmer wanted to write, say, an aquarium simulator, she would probably define a class of objects named Aquarium and another class called Fish. The internal state of an Aquarium would include a set of Fish, and the internal state of a Fish would include, for instance, a number indicating it's health. Fish would include a method called Fish.eat(food), which would have some effect on the its health, depending on the properties of the food. Running the programmer would involve creating an instance of Aquarium, populating it with some Fish, and the calling the appropriate Aquarium methods to introduce food and select Fish instances to eat it.


Okay, so... how would a non-object-oriented language work? I can't really imagine any other way for a high-level language to work (except for XML, but that's more for storing data than actually manipulating data anyway, as far as I can tell); I can imagine manipulating the data itself, but that seems like more like the way a low-level language would work. Unless I know of an alternative for high-level programming languages, it'll seem to me like that's just how a high-level programming language works. If I think that it's just how they work anyway, I'm not going to see why the "object-oriented" label even needs to be applied. You could say that the way XML works is an alternative, but as far as I can tell, they're not even used for the same thing, so in my mind, it's not an alternative to an object-oriented language, but a language for a separate purpose entirely. Then again, like I said, I've never had the chance to work with anything else; I really don't know.

There's lots of other ways. For example, in functional programming, you still have "objects", but they're just dumb clumps of organized values; they don't have any behavior associated with them intrinsically. Instead, your functions are specialized to different object types; you can define multiple functions with the same name and "automatically" choose the right one based on what types of values you pass to them.

Mostly this is all semantics; there's not a ton of difference between an "object" having a "method", and a "structure" with a "function" specialized on it. Big differences come when you start applying the philosophy to overall program structure. Java is *inherently* object-oriented; you start by creating a main class, which has a method that will get called by the system when you start the program, etc. You tend to use objects *all over* the place, where in a functional paradigm, for example, you might instead just use some functions. Some people find it easier to reason in one paradigm or the other; I strongly prefer a good functional system, because in my head programs are flows of data, manipulated by functions, and it feels "natural" to me that functions are *also* data that can be passed to other functions, modified, and then used for other purposes.

1. What is IANAOOPP?

I Am Not An OOP Programmer. (Using the standard IANAX construction for "I Am Not An X".)

2. When you say "data," are you referring to the stuff being manipulated, or something else? I've always considered "data" to refer to the things being manipulated, but I really don't know for sure.

...both. In strong OOP, you can capture *behavior* in objects. As the FizzNumber exactly showed, an object can capture something like "an integer, except with a new way to print itself". You've baked the "if mod 3, print 'fizz', etc" behavior into the object, rather than using it in your algorithm directly; your algorithm thus gets simpler, as it's just a loop from 1 to 100, constructing FizzNumbers and asking them to print.

The definition of what's "data" and what's "behavior" is inherently slippery in coding, and can shift based on what paradigm you're using and how comfortable you are in it. For example, a functional way to do fizzbuzz might be to write a transformer function, that takes an integer and outputs either the integer as a string, or a "fizz"/etc string, depending on the value. Then you build a list of numbers 1 to 100 and map the transformer function over it, producing a list of strings, and print it. In this, you only work with "primitive" values - numbers and strings - the whole time, and push the behavior into functions that transform those simple values instead.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby BedderDanu » Fri Jul 31, 2015 7:06 pm UTC

ucim wrote:
Moniker Pending wrote:What would be the distinction between an "object-oriented" language vs. a language that isn't "object-oriented?"
(Note: IANAOOPP.) As I see it, in a procedural approach, you create variables (which can include structs and arrays), stuff them with values, and write procedures that tell the computer what to do with these values. The procedures themselves are agnostic; they don't "belong" to the data, they are just there. They manipulate the data.

In an object oriented approach, you group your data into analogs of "things" you're working with and bind the data to the procedures that apply to it. So, in the end, this bundle is an "object" and it knows how to do things to itself.
Spoiler:
More precisely, how to do things to instances of itself.
You'd create an object called "fizznumber", and a procedure called "display" which would print the value contained in that ("this") fizznumber; that procedure would know to print "fizz" or "buzz" or 7 as appropriate. Then, you say "Fizznumber, print thyself!" in a loop, and the fizznumber object does whatever it must do. But only fizznumbers know how to do that. ComplexNumbers would have a different "display" function that belongs only to them, and would (for example) print 4+3i or 5i or 8 depending on its value.

The advantage to OOP is that the "outer" part of the program doesn't have to worry about how to display (for example) the thing in question. It just tells the object to display itself. Ditto all other procedures (adding to itself, doing a fourier transform on itself, whatever). It keeps code isolated.

The disadvantage (to some) is that there is (or appears to be) more programmer overhead in designing an OOP program. But maybe that's just because it happened after I already learned how to program procedurally.

Jose


Speaking as another beginner to the whole "Object Oriented" thing, here would be my Object oriented solution to the above "FizzBuzz" problem. Again, using a made up language.

Spoiler:

Code: Select all

OBJECT $FizzBuzzInstance = new Object("FizzBuzz") //Creates a new "FizzBuzz" object, which is defined below
WHILE($FizzBuzzInstance.Current() -leq 100)
{
  WRITE $FizzBuzzInstance.Print();
  $FizzBuzzInstance.Next();
}

DEFINE OBJECT "FizzBuzz" //This isn't really part of the program code. This defines what a "FizzBuzz" object can do. Often, this is called a class
{
  PRIVATE INT $_number = 1; //internal number that nothing else sees.

  PUBLIC INT Current() //Let other parts of the program see the number
  {
    RETURN $this._number;
  }

  PUBLIC INT Next() //Move the FizzBuzz object to the next number.
  {
    $this._number++;
    RETURN $this._number;
  }

  PUBLIC STRING Print() //Determine what to print between numbers, "Fizz", or "Buzz"
  {
    if(($this._number % 15) -eq 0)
    {
      RETURN "Fizz Buzz"
    }
    if(($this._number % 5) -eq 0)
    {
      RETURN "Buzz"
    }
    if(($this._number % 3) -eq 0)
    {
      RETURN "Fizz"
    }
    RETURN To_String($this._number)
  }
}


edit: So, now that you've tried, how does yours compare to mine? Is mine not clear enough?

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Fri Jul 31, 2015 9:33 pm UTC

Moniker Pending wrote:My answer is described above, in my response to the second quote.
Yes, you've described in English how you would do it. For the exercise (and we're not just giving you homework here, but trying to find a good starting point), write it in your made-up language.

You've already come to the issue of newlines; in your language you get to decide how your output statements handle them. But then you have to be consistent. (If they don't add newlines to output, then you need to supply them explicitly whenever needed. If they do, then you need to ensure that your line is complete before outputting it. Always.)

Moniker Pending wrote:Ultimately, it's hard to place exactly where the problem of "understanding syntax" begins, since the beginning point changes as I learn more. Still, it was extremely difficult and migraine-inducing for me to try to figure out what to do for the final project and related assignments in the course I took...
Maybe the course, or that part of the course, just went too fast, and you didn't have the prior concepts down before being shoved into something new.

re: morality
Spoiler:
Moniker Pending wrote:Well, that's because no other system of morality has actually worked from an objective standpoint.
I don't think there is anything "objective" about morality. Morality is about how we choose to behave, and what we think about those choices. It's not something that "exists" in the sense that an electron or a rock does. There's a thread about it in Serious Business.
Moniker Pending wrote:...whereas I can't figure out how or why some code works, and other code doesn't.
Do you have an example or two of this? Perhaps it will help elucidate whether the issue is one of not getting the concept, or of not seeing a typo.

IANAOOPP: I am not an OOP programmer. An extension of IANAL (I am not a lawyer). Which is also true.

Moniker Pending wrote:When you say "data," are you referring to the stuff being manipulated
Yes. For the fizznumber program, the only data is the number to be printed or fizzed or whatever. For a fish object (in an aquarium OOP), the data might include the size, mass, hunger, strength, etc. of the fish. In a D&D game, your player stats would be data, which would change as you went into battle and sustained damage, etc.

Moniker Pending wrote:So, an object is like a particular thing that a program does, as part of its larger function?
No, an object contains, in addition to data, functions ("methods") that alter the object's data (sometimes called the object's state). In a D&D game, a character could be an object which would have, in its "data department" the player stats (strength, hit points, weaponry, etc), and in its "method department" the functions that affect player stats (its own or another's), such as acquire(thing), hit(player), eat(food)... each affecting the data in the data department of some player characater or another. This whole bundle is the "object".

Each 'instance' of the object (each player character) would have its own copy of the data department, with data appropriate to that player. It would be able to use the functions in the function department. (By contrast, in procedural programming, a function exists on its own, and you feed it data to operate on. In OOP, a function ("method") exists as part of the object, so does not need to be fed its own data.)

My suspicion is that you might prefer a procedural language over an OOP language, but that's just suspicion at this time. But even so, it's not really the case that "all parts operate without conflict" by themselves. I can write a function that appends a string to another string, but if I try to use it on an integer, it's gonna gag. OOP is just one way of ensuring that you don't try to do that.

BedderDanu wrote:edit: So, now that you've tried, how does yours compare to mine? Is mine not clear enough?
Was that to me? If so, yours was more complete.

Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.

BedderDanu
Posts: 39
Joined: Tue Jan 14, 2014 6:18 am UTC

Re: Esoteric programming languages for an esoteric mind?

Postby BedderDanu » Fri Jul 31, 2015 11:40 pm UTC

ucim wrote:
BedderDanu wrote:edit: So, now that you've tried, how does yours compare to mine? Is mine not clear enough?
Was that to me? If so, yours was more complete.

Jose


Sorry, the question was for him. I was trying to build off your comment though, hence the quote.

For trying to help someone who's having problems with clarity and memory, I'm not being very clear, am I? :lol:

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Sat Aug 01, 2015 4:31 pm UTC

ucim wrote:Yes, you've described in English how you would do it. For the exercise (and we're not just giving you homework here, but trying to find a good starting point), write it in your made-up language.


It's not that I'm ultimately going to refuse to do it, but right now, I'm not sure what good writing the code in my made-up language is going to do, which is why I'm not doing it in this post. As ahammel noticed, the code I've come up in my imaginary language with isn't very different from the code one would find in the languages I'm used to, and the main problem I'm trying to address with this thread is the fact that the languages I'm used to aren't something I can really understand, especially when dealing with some of the more advanced uses of the code.

As will be implied at the bottom of this post, I can't really know for sure whether or not the code I've designed is "ideal" until I've figured out how the whole language works, and made sure that the language is capable of being used for any and all purposes it would be intended to be used for. By that point, I'd have figured the whole thing out, and I won't really need this thread any more.

You've already come to the issue of newlines; in your language you get to decide how your output statements handle them. But then you have to be consistent. (If they don't add newlines to output, then you need to supply them explicitly whenever needed. If they do, then you need to ensure that your line is complete before outputting it. Always.)


Well, that clarifies one thing, in case I find that something good will come of continuing the exercise.

Maybe the course, or that part of the course, just went too fast, and you didn't have the prior concepts down before being shoved into something new.


Well it was a Summer course. The Summer semesters are shorter, and so the courses have to be crammed into fewer sessions than a Fall or Spring course.

I don't think there is anything "objective" about morality. Morality is about how we choose to behave, and what we think about those choices. It's not something that "exists" in the sense that an electron or a rock does. There's a thread about it in Serious Business.[/spoiler]


Thanks for the link; I'll have to check the thread out, though I might end up posting before I've read all 15 pages of the whole thread. Given that this thread is intended to explore my psychology in order to find a language for me, I'm not sure how much of the moral discussion I should keep in that thread, vs how much I can still post in this thread; morality is, after all, an important part of psychology.

Do you have an example or two of this? Perhaps it will help elucidate whether the issue is one of not getting the concept, or of not seeing a typo.


I have a huge folder containing a bunch of NetBeans projects, and at this point, I don't really remember much of what I was stuck on in the projects I couldn't finish. As such, uploading individual examples of code won't be an option. If you have the patience, I could share the contents of the whole folder on my Google Drive, with one folder for what I could finish, and another for what I couldn't.

.... In a D&D game, your player stats would be data, which would change as you went into battle and sustained damage, etc.

...

No, an object contains, in addition to data, functions ("methods") that alter the object's data (sometimes called the object's state). In a D&D game, a character could be an object which would have, in its "data department" the player stats (strength, hit points, weaponry, etc), and in its "method department" the functions that affect player stats (its own or another's), such as acquire(thing), hit(player), eat(food)... each affecting the data in the data department of some player characater or another. This whole bundle is the "object".


So... an object is like a particular category of data and functions, defined by the purpose for which the data and functions exist?

... But even so, it's not really the case that "all parts operate without conflict" by themselves. I can write a function that appends a string to another string, but if I try to use it on an integer, it's gonna gag. OOP is just one way of ensuring that you don't try to do that.


Well, if the unifying ruleset doesn't have the four properties of a logical system in a flawless manner, then the components of the logical system probably aren't going to work together flawlessly, and from a logical perspective, the system doesn't work, even if it "works enough" for its intended purpose to be capable of producing something. Given how many systems "work enough," even if they don't work from a logical perspective, are accepted and used by almost everyone, I'd imagine that programming languages are no exception.

User avatar
firechicago
Posts: 621
Joined: Mon Jan 11, 2010 12:27 pm UTC
Location: One time, I put a snowglobe in the microwave and pushed "Hot Dog"

Re: Esoteric programming languages for an esoteric mind?

Postby firechicago » Sun Aug 02, 2015 12:56 pm UTC

Moniker Pending wrote:
So... an object is like a particular category of data and functions, defined by the purpose for which the data and functions exist?


Yes. Another common way of saying this is that an object has both state (data) and behavior (functions). Personally, I like the term state because it helps emphasize that the data in a given object is often mutable. So to extend the D&D character example: suppose your character object has x-position and y-position attributes that define where they are on the board. You could then have a character.move(x,y) function that would change those attributes to represent your character moving x spaces to the right and y spaces up on the board.

Moniker Pending wrote:Well, if the unifying ruleset doesn't have the four properties of a logical system in a flawless manner, then the components of the logical system probably aren't going to work together flawlessly, and from a logical perspective, the system doesn't work, even if it "works enough" for its intended purpose to be capable of producing something. Given how many systems "work enough," even if they don't work from a logical perspective, are accepted and used by almost everyone, I'd imagine that programming languages are no exception.

Programming languages are not really used as formal logical systems in this sense. And even if you try to treat them as such, Godel already tells us that they can't be both consistent and complete.

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Sun Aug 02, 2015 3:20 pm UTC

Moniker Pending wrote:the code I've come up in my imaginary language with isn't very different from the code one would find in the languages I'm used to, and the main problem I'm trying to address with this thread is the fact that the languages I'm used to aren't something I can really understand...
...which is why I think it could be an insightful exercise. You presumably understand your made-up language; after all, you made it up! As you use this (evolving, since you're making it up as you go along) language, you'll run into issues, such as the newline you just tussled with. You can make your own choice of implementation rather than be bound by an existing language, but in making that choice you'll participate in the construction of syntax. This should make the (later) use of (other language's) syntax more natural and second-nature to you, even if it makes the other choice. Assuming that this is the source of your issues. (It may not be; it might be instead just the speed of the course you took).

Moniker Pending wrote:As will be implied at the bottom of this post, I can't really know for sure whether or not the code I've designed is "ideal" until...
It doesn't have to be ideal. In fact, it shouldn't be.

1: For any exercise, you are focusing on one aspect of syntax; the rest would be distraction.

2: Optimization usually is a waste of time. Your time is more important than the computer's time; the computer can't enjoy a Mai Tai on the beach. :) Best is to write for clarity and ease of modification, because you will be modifying it to deal with new requirements in the future.

2a: When you do optimize, you'll probably find that only a few parts matter, but they matter a lot. That's where to put your effort. But you won't know what parts they are until you've pretty much written the program. Then you go back and fix the bottlenecks, and ship the product. (Unless you're Macroshaft, in which case you ship the product and then fix the bottlenecks. For a fee. :) )

Moniker Pending wrote:...until I've figured out how the whole language works, and made sure that the language is capable of being used for any and all purposes it would be intended to be used for. By that point...
...the heat death of the universe will be a distant memory.

Seriously.

It takes a long time to become even a moderately decent programmer, and still you won't have explored every nook and cranny of the language. Don't let the perfect be the enemy of the good. Especially when it comes to learning stuff. Because you won't get near "perfect" without first going all the way through "good", and you won't get good without going all the way through "rotten". :)

Moniker Pending wrote:Given that this thread is intended to explore my psychology in order to find a language for me...
Ummmm.... no. We're making suggestions based in part on things you've said about your experience and psychology, in an attempt to help you find a good entrance into programming. That's not quite the same as "exploring your psychology...".

Moniker Pending wrote:If you have the patience, I could share the contents of the whole folder...
No, that's too much to go through. But if you select an example or two (it's gotta be worth your time before it's worth ours), perhaps somebody with the appropriate experience and insight could help you work through one of your issues, and based on how that goes, could perhaps identify ways to smooth your learning process. I happen to not know NetBeans, so it wouldn't be me for that example.

Moniker Pending wrote:So... an object is like a particular category of data and functions, defined by the purpose for which the data and functions exist?
Yes. Exactly.

Moniker Pending wrote:Well, if the unifying ruleset doesn't have the four properties of a logical system...
It's not that. It's that it's still up to the programmer to write bug-free code. Some languages make it easier to trip up. But bug-free code (if you write it) always works.
Spoiler:
... in a bug-free environment. Good luck finding one! :) Even operating systems are not bug-free. But you work with what you have.
Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.

User avatar
ahammel
My Little Cabbage
Posts: 2135
Joined: Mon Jan 30, 2012 12:46 am UTC
Location: Vancouver BC
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby ahammel » Sun Aug 02, 2015 3:24 pm UTC

Moniker Pending wrote:As ahammel noticed, the code I've come up in my imaginary language with isn't very different from the code one would find in the languages I'm used to, and the main problem I'm trying to address with this thread is the fact that the languages I'm used to aren't something I can really understand, especially when dealing with some of the more advanced uses of the code.
You are not the first person to have this problem. There is no solution but experience.

As will be implied at the bottom of this post, I can't really know for sure whether or not the code I've designed is "ideal" until I've figured out how the whole language works, and made sure that the language is capable of being used for any and all purposes it would be intended to be used for.
All general-purpose programming languages can be used to write any computable program (this is a property called Turing completeness). Sure, some languages are better suited to certain problem domains than others, but honestly, I don't think you should be worrying too much about that before you've mastered the basics.

I have a huge folder containing a bunch of NetBeans projects, and at this point, I don't really remember much of what I was stuck on in the projects I couldn't finish. As such, uploading individual examples of code won't be an option. If you have the patience, I could share the contents of the whole folder on my Google Drive, with one folder for what I could finish, and another for what I couldn't.
Friend, nobody is going to debug a directory full of half-finished projects for you. If you're interested in learning more, I'd suggest you work on a set of small, well-defined exercises such as those found at Project Euler, and then come ask here when you run into problems.

If you don't want to do that in Java (and I can hardly blame you, having intentionally avoided Java for my entire life as a programmer), I'd suggest picking a relatively commonly used language that was designed with beginner-friendliness in mind, such as Python, Scheme, or Smalltalk. I would strongly suggest that you leave esolangs alone: it will be very difficult to find somebody who can help you debug your code.

I don't think we're going to be able to name a language that's a perfect fit to your particular psychology just based on your descriptions. Your best bet is to just pick one, give it the old college try, and move on if it's not for you.
He/Him/His/Alex
God damn these electric sex pants!

Moniker Pending
Posts: 39
Joined: Tue Jul 28, 2015 12:59 pm UTC

Re: Esoteric programming languages for an esoteric mind?

Postby Moniker Pending » Sun Aug 02, 2015 4:50 pm UTC

firechicago wrote:Yes. Another common way of saying this is that an object has both state (data) and behavior (functions). Personally, I like the term state because it helps emphasize that the data in a given object is often mutable. So to extend the D&D character example: suppose your character object has x-position and y-position attributes that define where they are on the board. You could then have a character.move(x,y) function that would change those attributes to represent your character moving x spaces to the right and y spaces up on the board.


I think I got the whole "data" thing a while ago; like I said, I'm used to editing XML files for gaming purposes, and that's basically working with nothing but data! Still, it was hard to understand exactly what an object is, but I think I'm getting the hang of it now.

[quote=\]Programming languages are not really used as formal logical systems in this sense. And even if you try to treat them as such, Godel already tells us that they can't be both consistent and complete.[/quote]

I'd think that a programming language that would work for me would have to be designed to be used as such. If that's the case... I'm probably SOL.

..........

ucim wrote:...which is why I think it could be an insightful exercise.


Oh, as an exercise, it would definitely be useful. To describe to others what a programming language for me might look like, especially for the purpose of this thread, it's not so useful.

It doesn't have to be ideal. In fact, it shouldn't be.


...Perhaps I'm misinterpreting the reason for which the exercise was posted in the first place.

...the heat death of the universe will be a distant memory.


Yep. Like I said... SOL. I might still be interested in continuing this discussion, even if only as an exercise, or to find a language that's only somewhat less obstructively problematic for me, but the original purpose of this thread might be impossible to actually fulfill.

Ummmm.... no. We're making suggestions based in part on things you've said about your experience and psychology, in an attempt to help you find a good entrance into programming. That's not quite the same as "exploring your psychology...".


Like I said, I'm not good with words. I once caused complete chaos throughout another forum (beyond the thread itself) a decade ago, simply because the people there, who had refuted the argument plenty of times before, could not figure out that I was making the cosmological argument, which I had conceived of in my 13-year-old mind, independently of any other sources of information (I was a Deist at the time, in case you're wondering). Yes, my articulation was that bad, and it hasn't gotten much better since then. It has, however, gotten hammier, as I've mentioned of my speech pattern under certain conditions in the spoiler box in the first post of this thread.

My point is, that was a miscommunication on my part. I was trying to mention that some of the moral discussion might potentially have to stay here, for the purposes of this thread, and I kind of messed up in describing why. Then again, now that the moral discussion isn't even happening there, anymore... I'm not sure what to do about that.

No, that's too much to go through.


To address this, and what ahammel said after you, I was being tongue-in-cheek there. I understand that no one here is going to have that much patience.

But if you select an example or two (it's gotta be worth your time before it's worth ours), perhaps somebody with the appropriate experience and insight could help you work through one of your issues, and based on how that goes, could perhaps identify ways to smooth your learning process. I happen to not know NetBeans, so it wouldn't be me for that example.


I could try to find an example, but like I said before, I can barely remember anything from that part of the course, and I do remember having no idea at the time of what I should have even tried, let alone how to try it.

It's not that. It's that it's still up to the programmer to write bug-free code. Some languages make it easier to trip up. But bug-free code (if you write it) always works.
Spoiler:
... in a bug-free environment. Good luck finding one! :) Even operating systems are not bug-free. But you work with what you have.


Now that I think of it, one of the reasons for which I'd prefer a logically working (AKA flawless) programming language is the fact that, with a "highest-order" ruleset that isn't contradicted (though it might be expanded on) by abstraction, it would be easier to figure out what the functions of individual samples of code would be. I'm... not even sure how to explain why, in an exact manner. I know the concept, but the words just aren't there.

I've already addressed most of ahammel's post with my response to ucim's post, so...

All general-purpose programming languages can be used to write any computable program (this is a property called Turing completeness). Sure, some languages are better suited to certain problem domains than others, but honestly, I don't think you should be worrying too much about that before you've mastered the basics.


So, in other words, I would have wanted a "Turing Complete" language for the exercise. I agree with the second sentence, at least regarding the practicality of the exercise, but I also thought it wouldn't serve what I thought the exercise's purpose was in this thread.

User avatar
ahammel
My Little Cabbage
Posts: 2135
Joined: Mon Jan 30, 2012 12:46 am UTC
Location: Vancouver BC
Contact:

Re: Esoteric programming languages for an esoteric mind?

Postby ahammel » Sun Aug 02, 2015 5:03 pm UTC

Moniker Pending wrote:I could try to find an example, but like I said before, I can barely remember anything from that part of the course, and I do remember having no idea at the time of what I should have even tried, let alone how to try it.
So start over with some fresh exercises and ask for help when you get stuck.

So, in other words, I would have wanted a "Turing Complete" language for the exercise.
Your language appears to have conditional branching and variable assignment and thus is already Turing complete. Turing completeness is a very low bar for a programming language.

I agree with the second sentence, at least regarding the practicality of the exercise, but I also thought it wouldn't serve what I thought the exercise's purpose was in this thread.
I believe the purpose of the exercise was to determine what features you want in a programming language so that we could suggest a language that has those features. As it turns out, you don't know exactly (which is hardly surprising, as you don't have a lot of programming experience). Your best bet is therefore to just try a language and see if you get along with it.
He/Him/His/Alex
God damn these electric sex pants!

User avatar
ucim
Posts: 6895
Joined: Fri Sep 28, 2012 3:23 pm UTC
Location: The One True Thread

Re: Esoteric programming languages for an esoteric mind?

Postby ucim » Sun Aug 02, 2015 5:50 pm UTC

Moniker Pending wrote:I'd think that a programming language that would work for me would have to be designed to be used as such [(both consistent and complete)]. If that's the case... I'm probably SOL.
Yup. There are no perfect tools in programming. Or anywhere. Programming languages all have bugs - that's why they have version numbers. You just have to live with it and work within it. And the programs you write as you learn are not going to be perfect either (otherwise there would be no need to learn).

Moniker Pending wrote:Oh, as an exercise, it would definitely be useful.
Then it's worth doing. BTW, pseudocode like that is a common tool in writing a program - it lets you sketch out the overall flow of what you want to accomplish before actually writing the niggly code. It helps keep you from coding yourself into a corner.

Moniker Pending wrote:Now that I think of it, one of the reasons for which I'd prefer a logically working (AKA flawless) programming language is the fact that, with a "highest-order" ruleset that isn't contradicted (though it might be expanded on) by abstraction, it would be easier to figure out what the functions of individual samples of code would be. I'm... not even sure how to explain why, in an exact manner. I know the concept, but the words just aren't there.
Yeah. If you can be sure the bug is not in language, then you can confidently look for it in your program. Every now and then that bites the programmer. But mostly, (for me at least), the question is "do I not understand this concept that I thought I knew, or did I simply make a dumb syntax error like putting a comma in where a period belongs. Or am I feeding it bad data because of some other bug somewhere else that I missed?"

Anyway, from what I've seen, I think you just need to go slower, and not be too concerned about writing the "perfect" program, or about the usefulness of the programs you're writing as learning exercises. Anybody can be blown away by running too fast.

Jose
Order of the Sillies, Honoris Causam - bestowed by charlie_grumbles on NP 859 * OTTscar winner: Wordsmith - bestowed by yappobiscuts and the OTT on NP 1832 * Ecclesiastical Calendar of the Order of the Holy Contradiction * Heartfelt thanks from addams and from me - you really made a difference.


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 7 guests