mersenneforum.org  

Go Back   mersenneforum.org > Extra Stuff > Blogorrhea > jvang

Reply
 
Thread Tools
Old 2018-06-12, 15:33   #12
science_man_88
 
science_man_88's Avatar
 
"Forget I exist"
Jul 2009
Dumbassville

100000110000002 Posts
Default

Quote:
Originally Posted by jvang View Post
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
science_man_88 is offline   Reply With Quote
Old 2018-06-12, 17:24   #13
jvang
veganjoy
 
jvang's Avatar
 
"Joey"
Nov 2015
Middle of Nowhere,AR

22·3·37 Posts
Default

Quote:
Originally Posted by science_man_88 View Post
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
jvang is offline   Reply With Quote
Old 2018-06-13, 08:08   #14
Nick
 
Nick's Avatar
 
Dec 2012
The Netherlands

110110111102 Posts
Default

Quote:
Originally Posted by jvang View Post
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
Nick is offline   Reply With Quote
Old 2018-06-13, 23:43   #15
jvang
veganjoy
 
jvang's Avatar
 
"Joey"
Nov 2015
Middle of Nowhere,AR

22×3×37 Posts
Default

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.
jvang is offline   Reply With Quote
Old 2018-06-14, 17:27   #16
jvang
veganjoy
 
jvang's Avatar
 
"Joey"
Nov 2015
Middle of Nowhere,AR

22×3×37 Posts
Default Learning Linux

Haskell is now on the backburner

Whenever my dad has the chance to install Linux over Windows, he does. He normally uses some form of Debian or Ubuntu. Everything is just the way he wants it, and nothing happens without him knowing about it and him being able to do something about it. Whereas with all of our Windows installations, the system is not customizable to his liking, does random stuff without him being reasonably able to do something about it and without telling him, and has to restart often for updates and whatnot (he doesn't like restarting his stuff a lot). Tons of complaints about Windows, none for Linux

The book I'll be using to learn Linux is Linux Essentials by Roderick W. Smith. It's meant to help the reader complete the Linux Essentials certification with the Linux Professional Institute, so any popular Linux distribution can be used. I have a Kindle edition of the book, so any quotes/whatever I take from the book will be noted with the location number that the Kindle uses instead of its page number. If anyone were to use the physical version or a different Kindle model, I'm not sure if the page numbers would be the same, hence the location number.

This book gives plenty of reasons about why one should learn Linux (loc 467):
  • Linux is open source, and most distributions are free-of-charge
  • Linux has inherited a bunch of Unix software, which is important in a lot of academic and business applications
  • Linux can run on anything from cell phones to supercomputers, and can be usede on old computers that are unable to run the latest iteration of Windows
  • Linux is commonly used for the behind-the-scenes tasks of many businesses and non-profits, such as running their web sites, routing their internet traffic, etc.
The book is written from even more of a beginner's standpoint than the Haskell book. The author assumes very few things of the reader, such as the ability to operate a keyboard, find one's way around the GUI, use an optical drive, and other extremely basic actions. Anyone wanting to run Linux on their PC needs at least a 400 MHz Pentium Pro or better, 1 GB of RAM, and 10 GB of hard drive space

That's about it for the introduction; an overview of Linux's key components and what you'll need to do the tasks in the book.
jvang is offline   Reply With Quote
Old 2018-06-14, 17:45   #17
paulunderwood
 
paulunderwood's Avatar
 
Sep 2002
Database er0rr

75368 Posts
Default

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!
paulunderwood is offline   Reply With Quote
Old 2018-06-14, 20:45   #18
jvang
veganjoy
 
jvang's Avatar
 
"Joey"
Nov 2015
Middle of Nowhere,AR

22×3×37 Posts
Default

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.
jvang is offline   Reply With Quote
Old 2018-06-16, 01:50   #19
jvang
veganjoy
 
jvang's Avatar
 
"Joey"
Nov 2015
Middle of Nowhere,AR

1101111002 Posts
Default

Chapter 1 is about the basics of an OS and an overview of Linux. Here's what the chapter covers:

What an OS is
  • Provides 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 is
  • Software 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 OS
  • Command 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 environments
  • A desktop environment provides program launchers, file managers, window controls, virtual desktops(for multitasking), and logout options.
Comparisons between Linux and Unix, Mac OS, and Windows
  • Linux 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 are
  • Linux 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 distributions
  • This 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.
jvang is offline   Reply With Quote
Old 2018-06-16, 06:24   #20
R. Gerbicz
 
R. Gerbicz's Avatar
 
"Robert Gerbicz"
Oct 2005
Hungary

2·3·11·23 Posts
Default

Quote:
Originally Posted by jvang View Post
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).
R. Gerbicz is offline   Reply With Quote
Old 2018-06-16, 07:21   #21
Nick
 
Nick's Avatar
 
Dec 2012
The Netherlands

2·3·293 Posts
Default

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!
Nick is offline   Reply With Quote
Old 2018-06-16, 13:58   #22
jvang
veganjoy
 
jvang's Avatar
 
"Joey"
Nov 2015
Middle of Nowhere,AR

22×3×37 Posts
Default

Quote:
Originally Posted by R. Gerbicz View Post
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 View Post
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.
jvang is offline   Reply With Quote
Reply

Thread Tools


Similar Threads
Thread Thread Starter Forum Replies Last Post
Musings of someone learning airsquirrels Math 20 2018-12-29 18:15
Online language-learning course kladner Lounge 8 2013-04-18 03:08
Learning Python - Course from Google Jeff Gilchrist Programming 3 2012-01-15 00:29
flowcharts, self-learning jasong jasong 6 2007-12-07 14:06
Learning About RAM the Hard Way 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

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.

This forum has received and complied with 0 (zero) government requests for information.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
A copy of the license is included in the FAQ.