What to Start With: Coding and Computer Science
What are the skills and languages required to build something kike Facebook, amazon, etc.?
1 Answer
This is too big of a question to really answer, but I will suggest you first start with basic website stuff, such as html, css, JavaScript, and then some back end language to compose those into front end pages. I suggest PHP, but Ruby, Python, Java, etc., are popular as well.
After that, you can consider switching to a framework like WordPress, Drupal, or Joomla, if you want.
Then you would want to learn back end database development, systems administration, etc. It is a really big subject to achieve a large online success.
What is the best way to compare between big files in C#, Without exploiting lots of memory?
7 Answers
It depends on what level of comparison you are looking for,for example:
- Length (in bytes) and/or date-time comparison (doesn’t need you to read the file in at all)
- For text files, comparing word or line counts.
- Finding where one file has a sequence that ismissing from (or in addition to) the other file.
The last one of these is the hardest.
Most things can be done without loading the entire text of both files into memory at once, as it is possible to move the (disk) file pointer back and forth, and read in a chunk at a time into a memory buffer, so that you can work on part of the file in isolation.
The downside of working on chunks of files is that the searching/comparison process can take much longer, as you may have to re-read sections of the file multiple times, and hard disks are very slow compared to RAM. However, when files are really huge you don't have the option to bring them all into memory at once.
Im 19, I have no experience in anything pertaining to computers. Can some explain broadly the "basics" of coding/programming, a good explanation?
4 Answers
A programming language is a way for people to give computers instructions. This can be for something as simple as displaying the words “hello world” on the screen, to as complicated as figuring out how to learn from experience and defeat the greatest Go masters in the world at a game many people said relied on intuition.
Computers only understand black and white, on and off, 1 or 0. Programming languages that are closer to binary - such as assembly - are referred to as “low level.” Programming languages that are closer to written English, such as JavaScript, are referred to as “high level.” Low level languages run faster, high level languages are easier to code in. Most programming is done in higher level languages.
There are different kinds of coding. For example, there is web development, desktop applications development, cloud application development and mobile development. Different platforms use different languages, but some languages are more versatile than others. C# and Java are probably your most versatile languages, and they handle desktop applications, mobile applications and the backend code on web servers. Other languages, like Swift, are only really used for one thing.
Learning to code isn’t easy. It isn’t just learning a language and you’re off. There are frameworks, protocols, databases… all kinds of things to interact with. Those environments and the languages themselves are constantly changing. Being a coder means either lifetime learning or watching your skills quickly become worthless.
If you want to start from your level of minimal experience and start working towards being one of those awesome guys from Silicon Valley, try following this path:
- Take Stanford University’s Intro to Computer Science Course. Don’t worry, no math or computer background is required. It covers the basics and underlying ideas of computers and is available online for free: Computer Science 101
- Do these introductory web development classes at Dash: Dash | Learn HTML, CSS, JavaScript with our free online tutorial | General Assembly
- Still having fun? Then take a deep breath and dive into Free Code Camp. By the end of that very deep curriculum, you will know enough to get a job as a junior developer:Learn to code and help nonprofits
- Don’t stop there! Because you are young, you still have time for education. If you’re in school, pick up some more computer science courses. If you’re not, try for a coding school like Hack Reactor: Hack Reactor - The CS Degree for the 21st Century
Those four steps are a legit path. If you really want to learn to code, I’d consider following them. It’s easier said than done, but don’t worry. Like I said, coding is hard. It’s hard and that’s okay. Persistence and determination are what will get you through it.
Good luck!
I was asked to answer, so let’s try.
You can have different view of how to write code. Different languages follow different path here.
The most simple one is telling the computer step by step what to do. This is liek read file “xyz” interpret the first row as headers, read the other rows and remember them ad values, do some stuff with that and write that stuff into a databse. Very easy, very imperative.
Then there are languages trying to create different data as somthing you can grep. A row is an object you can ask for its values and change them or create new objects representing somer result.
Another approach is not to focus too much about different items you can manipulate but on an abstraction… in a mathematical sense. I have a dataset and I want to create another different dataset. And between that there is some rule doing that for me. This rule might be a rule created by putting together/using other rules. And this specified rule is then applied to the input dataset to generate the output.
These three descriptions are the most common approaches and are called the procedual, the object oriented and the functional paradigm. Procedual programming is the oldest of these paradigm and widely used when working close to the machine (operating systems, industrial robots…). Object oriented programming is as far as I can estimate the one with the widest usage while functional programming became hotter over the last ten years (even though there are languages using that paradigm for 50 years now thinking of LISP).
Every paradigm has it’s advantages and disadvantages and if you learn programming you should dive into all of them over time (beginning maybe with a single one to gain experiance; see my answer on that topic: Bernhard Støcker's answer to Is learning too many programming languages counterproductive?).
Programming is some kind of art. Like a painter you need experiance. You need to figure out stuff. Like learning how to move your paintbrush over your canvas you need to learn how a good software architecture looks like. How to keep code simple and though maintainable. You need to learn how to ensure quality by testing and that are all things which take time. But solving problems is fun. And achieving some working stuff is a great fealing even though the way to that can be frustrating especially in the beginning.
I won’t try to explain in a few minutes.
If the subject interests you enough to be able to spend a few weeks on it, I suggest to readSICP (an excellent & freely available book to start learning programming). Be sure to practice also on your laptop.
Be aware that programming is difficult (like many other domains: wood sculpture, mathematics, some foreign language, …). You’ll need ten years to learn it.
There are an infinite number of ways to talk about computers and programming, but the only way I think a person new to them can really begin to understand, is to start is at the bottom. That is the only way to really give an idea of the scope.
And bottom starts with a half adder. Anything electrical can only have a binary number system, with a 0 and a 1 being with the electricity off or on. We are used to base 10 because we have 10 fingers, but any number system works just as well. It just means with base 2 you have to carry sooner. When you count 0, 1, 10, 11, 100, …
So for any addition operation, the hardware just has to be able to add 2 binary inputs, which each can be the values of either 0 or 1. There are 2 binary results, the place show value and the carry value. Here is the specs of a half adder:
Then once you understand how a half adder can be implemented in hardware gates like XOR and AND, all you have to image how any number of these can be chained together to add any size integer you want. With 64 of them, you can add 2 64 bit integers, up to the value of 1.8446744e+19. With only 8, you could only have gotten up to the value 256.
I could go lower still to explain how transistors implement operations like XOR or AND, but that is not really necessary I think.
With that basic understanding, then it is better to expand upwards, where programming languages allow you to write instruction to do arithmetic operations like add, subtract, multiply, etc. Then depending on the calculated values, the next thing a programming language needs is the ability to branch between 2 series of instructions. The next would be the ability to designate an instruction that causes a series of instructions to be repeated in a loop. Then there has to be instructions to get input and put out result. Finally there have to be instructions that allow groups of instructions to be called independently, out of the local sequence, that then returns were you were after the called sequence is done.
There obviously is more too it, such as how you do things like represent graphic with just binary numbers, but really the rest is all easy in comparison. And this gives you some idea of the slightly tedious way computer have to go into such detail.

Comments
Post a Comment
Comment here.