mersenneforum.org ¿Learning how to learn…
 Register FAQ Search Today's Posts Mark Forums Read

2018-06-12, 15:33   #12
science_man_88

"Forget I exist"
Jul 2009
Dumbassville

100000110000002 Posts

Quote:
 Originally Posted by jvang As far as I can tell Haskell is pretty general. It can be used to program a solution to most problems where a program could be used. Since my only programming background is a couple of hours in Python, Haskell is pretty much going to be my first language; since it is purely functional, it'll be good for mastering functional programming as a whole. And despite having a reputation for being hard to learn, it seems that other purely functional languages are more difficult to learn. I don't think speed is relevant to a beginner, since Python is a good starting language. Reading Haskell seems simple enough, and debugging isn't too hard compared to some other languages. Not sure about Haskell-specific actions. I might be getting a hang of the syntax for the lambda calculus. As an example from the Wikipedia page for the lambda calculus: A lambda abstraction has the form $$\lambda x . t$$ where $$x$$ is a normal variable and $$t$$ is a lambda term. A lambda term is either a variable, an abstraction, or an application. I haven't figured out applications yet, but I'm working on it. When you have multiple lambda abstractions nested in each other, like $$\lambda x . \lambda y . x^2 + y^2$$, you declare each variable one-at-a-time, a method called currying. I'm guessing it's easier for a computer to solve multiple, smaller steps than less, but more complex steps. My rudimentary understanding of functional programming is that normal programming involves Boolean algebra and changing states, whereas functional programming is based upon evaluating mathematical functions. Functional code is supposed to be predictable in its output instead of relying on different states, which allows programmers to more easily understand raw code. I'm probably incorrect on this, so maybe someone can clear up that definition?
https://en.m.wikipedia.org/wiki/Functional_programming

2018-06-12, 17:24   #13
jvang
veganjoy

"Joey"
Nov 2015
Middle of Nowhere,AR

22·3·37 Posts

Quote:
 Originally Posted by science_man_88 https://en.m.wikipedia.org/wiki/Functional_programming
Some of that has cleared up my understanding but a lot of it is way over my head

Trying to finish up the chapter on the lambda calculus. All I have left are applications and beta reduction.

Additionally, in my last post I forgot about a term called an argument, which is just any sort of input that you have in a function, whether it is a variable, number, string, lambda abstraction, etc.

Applications are how you call a function in Haskell. It's pretty much exactly how you apply a function to a variable normally, as in $$f(x)$$ where $$f$$ represents the function and $$x$$ is the variable to be substituted in.

Beta reduction is how a function is simplified to its beta normal form, as in $$1+1=2$$. A simple example from the book uses the identity function $$\lambda x . x$$, and the argument $$2$$. To substitute $$2$$ for $$x$$, you make an application that looks like $$(\lambda x . x) 2$$. Since there is nothing to actually do in this function, the application returns the argument, $$2$$

PS: For learning Haskell I'm mostly using the book, Haskell.org, learnyouahaskell.com, Wkipedia, and Stack Overflow. Are there any other sites/sources that I would find helpful?

Last fiddled with by jvang on 2018-06-12 at 18:21 Reason: typing is hard

2018-06-13, 08:08   #14
Nick

Dec 2012
The Netherlands

110110111102 Posts

Quote:
 Originally Posted by jvang PS: For learning Haskell I'm mostly using the book, Haskell.org, learnyouahaskell.com, Wkipedia, and Stack Overflow. Are there any other sites/sources that I would find helpful?
http://legacydirs.umiacs.umd.edu/~ha...aume02yaht.pdf

2018-06-13, 23:43   #15
jvang
veganjoy

"Joey"
Nov 2015
Middle of Nowhere,AR

22×3×37 Posts

Quote:
 Originally Posted by Nick http://legacydirs.umiacs.umd.edu/~ha...aume02yaht.pdf
Thanks! Although it assumes some knowledge of programming, it seems readable enough.

We're having a bit of trouble understanding this stuff, so I'm thinking about posting other things while I get a hang of this. After rereading the first chapter I'm pretty sure I'm missing a lot of the lambda calculus stuff, and/or am just straight wrong in my understanding.

My dad has suggested that I learn my way around Linux. I'll still be trying to figure out Haskell in the background, but for posts I'll write my learnings of Linux.

 2018-06-14, 17:45 #17 paulunderwood     Sep 2002 Database er0rr 75368 Posts Linux is very popular now and helps the youth of today with a real understanding of how computers work, unlike the dark ages of Micro$oft domination especially in schools of yesteryear. Then billions of pounds were paid by the government on behalf of the tax-payer to educate children on how to use essentially M$ Office products and to get them dependent on the M$ecosystem -- okay the gaming industry liked M$. With Linux, one can hack the source, re-compile and run. Where do I start with what is available? There is Bash (or umpteen other shells), Libre Office, GCC and literally thousands of other things to try for free with freedom. Watch out for BSD!
 2018-06-14, 20:45 #18 jvang veganjoy     "Joey" Nov 2015 Middle of Nowhere,AR 22×3×37 Posts Actually...I got a special certificate from one of my classes telling me that I'm qualified in MS Office products. It was a class on how to use Word, Powerpoint, and Excel in the most convoluted, by-the-numbers way possible and it was awful, and required. Microsoft is still widely used in schools that I've been to; we get huge grants to use their crap.
 2018-06-16, 01:50 #19 jvang veganjoy     "Joey" Nov 2015 Middle of Nowhere,AR 1101111002 Posts Chapter 1 is about the basics of an OS and an overview of Linux. Here's what the chapter covers: What an OS isProvides the fundamental software features of a computer, allows you to use the computer's hardware devices, defines the user interface, and provides basic tools for the user. What a kernel isSoftware component that manages low-level features of the computer, such as interfacing with hardware, allocating memory and CPU time to programs, and enabling programs to interact with each other. Other components of an OSCommand line shells, which allow the user to interact with the computer through text commands. Graphical user interfaces, which allow the user to interact with the computer using icons and menus. Utility programs, such as calculators, calendars, text editors, etc. Libraries, collections of programming functions that are used by many programs. GUIs and desktop environmentsA desktop environment provides program launchers, file managers, window controls, virtual desktops(for multitasking), and logout options. Comparisons between Linux and Unix, Mac OS, and WindowsLinux and Unix are closely related, as Linux is modeled after Unix. Similar software works on both OSs. Mac OS X has some similarities with Linux. Many shell commands are the same and it ships with popular Unix server programs that work on Linux. However, the UI is very different from Linux and OS X is only meant for Mac computers, whereas Linux runs on just about anything. Windows is pretty different from Linux, though have similar functions. Linux is open-source and generally free to use, but Windows is proprietary commercial software. Drivers for hardware are generally more available on Windows than Linux, since manufacturers kind of ignore the Linux community in favor of Windows. Additionally, a lot of familiar software, like Microsoft Office, is only available on Windows, though Linux has plenty of free, open-source alternatives. The two OSs have much different user interfaces, but Linux is more customizable to the user. Lastly is security, where viruses plague Windows and security updates are frequent, whereas Linux has few security threats. What Linux distributions areLinux really only refers to the underlying kernel; what you see differs from distribution to distribution, with differences similar to those between OSs. Each distribution uses the Linux kernel, but has different configuration files, legacy Unix tools, software packages, startup scripts, installers, and user interfaces. How release cycles work for distributionsThis is how much time there is between different versions of a distribution. Some distributions, like Ubuntu, come out every 6 months, while others have longer and more lenient timespans. Shorter release cycles are focused on getting access to the latest changes, while longer cycles are more stable and reliable. Also interspersed between the sections are tidbits of the history of Linux and its relations to Unix. The last section is "The Essentials and Beyond," an overview found at the end of each chapter reiterating the main topics that were covered.
2018-06-16, 06:24   #20
R. Gerbicz

"Robert Gerbicz"
Oct 2005
Hungary

2·3·11·23 Posts

Quote:
 Originally Posted by jvang For learning Haskell I'm mostly using the book, Haskell.org, learnyouahaskell.com, Wkipedia, and Stack Overflow. Are there any other sites/sources that I would find helpful?
Do you plan to code also rather than just boring reading? That would be the real programming, you can try some online judge to see where you are: https://en.wikipedia.org/wiki/Online_judge
(some of these doesn't support Haskell at code submitting, but you'll see it).

 2018-06-16, 07:21 #21 Nick     Dec 2012 The Netherlands 2·3·293 Posts Do you know Andy Tanenbaum's book on modern operating systems? http://www.mypearsonstore.com/bookst...-9780133591620 If you have access to a copy, it gives a good idea of how deeply you would get to study these ideas if you choose a computer science degree. The author is a professor at the Vrije Universiteit just down the road here (in Amsterdam), but I think his book is also used there at the University of Arkansas!
2018-06-16, 13:58   #22
jvang
veganjoy

"Joey"
Nov 2015
Middle of Nowhere,AR

22×3×37 Posts

Quote:
 Originally Posted by R. Gerbicz Do you plan to code also rather than just boring reading? That would be the real programming, you can try some online judge to see where you are: https://en.wikipedia.org/wiki/Online_judge (some of these doesn't support Haskell at code submitting, but you'll see it).
Definitely! I already have a means of processing Haskell code, but I'm still trying to figure out the basics

Quote:
 Originally Posted by Nick Do you know Andy Tanenbaum's book on modern operating systems? http://www.mypearsonstore.com/bookst...-9780133591620 If you have access to a copy, it gives a good idea of how deeply you would get to study these ideas if you choose a computer science degree. The author is a professor at the Vrije Universiteit just down the road here (in Amsterdam), but I think his book is also used there at the University of Arkansas!
I'll look into that! If I decide on computer science I'm not sure which colleges I'll look at. I don't think many of our universities have strong computer science curriculums.

 Similar Threads Thread Thread Starter Forum Replies Last Post airsquirrels Math 20 2018-12-29 18:15 kladner Lounge 8 2013-04-18 03:08 Jeff Gilchrist Programming 3 2012-01-15 00:29 jasong jasong 6 2007-12-07 14:06 Longshot Hardware 5 2005-05-21 16:40

All times are UTC. The time now is 08:46.

Mon Nov 29 08:46:55 UTC 2021 up 129 days, 3:15, 0 users, load averages: 1.31, 1.25, 1.19