What to Start With: Coding and Computer Science

What are the skills and languages required to build something kike Facebook, amazon, etc.?

Can you answer this question?
Answer
1 Answer
Kirk Augustin
Kirk AugustinMS Computer Science, Software Eng., 45 years.
54 Views
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?

Can you answer this question?
Answer
7 Answers
Martyn Davies
Martyn DaviesSoftware engineer of 25 years experience, in C, C++, Java, .NET and back into...
140 Views
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?

I'd appreciate many answers and perspectives. A slightly philosophical explination could do well for motivation. I wanna be like my boys on Silicon Valley #leggo
Can you answer this question?
Answer
4 Answers
Matt West
Matt Westthreequals for the win
22 Views • Matt has 270+ answers in Computer Programming
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:
  1. 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
  2. Do these introductory web development classes at Dash: Dash | Learn HTML, CSS, JavaScript with our free online tutorial | General Assembly
  3. 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
  4. 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!
Bernhard Støcker
Bernhard StøckerI wrote code in 8 languages. My favorites are the functional once.
18 Views • Bernhard has 960+ answers in Computer Programming
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.
Kirk Augustin
Kirk AugustinMS Computer Science, Software Eng., 45 years.
19 Views • Kirk has 450+ answers in Computer Programming
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.
Upvote

What Programming language should I learn to develop my skills?

Hello, I’m already a web developer who work with Vb.Net, HTML5, CSS3.
I’m planning to develop my skills and learn new things.
My plan is to go for web + mobile app, so i’m confused about which programming language should i learn
Follow2Basile Starynkevitch
163 Views • Basile has 420+ answers in Computer Programming
My suggestion is to learn programming (and that means much more than coding some web site). That is difficult and may take about ten years.
I advise you to read SICP, an excellent & freely available book to learn programming (using Scheme).
I also suggest to learn more about algorithms & data structures. Read Introduction to Algorithms (or some other good book).
Install and use Linux on your laptop (notice that Linux is running most servers). Learn to use it on the command line. Study and contribute to some free software.
Learn and practice some functional language, like Ocaml (thru Ocsigen, it can also be used to code some very dynamic websites), Haskell, Common Lisp, Scheme, Clojure…
Richard Eng
Richard EngIn my 20+ year career, I've used C, C++, C#, Fortran, Tandem TAL, Java, Python
179 Views • Most Viewed Writer in Programming Languages with 420+ answers
For God’s sake, don’t learn JavaScript! It’s a horrible language and many in the IT community have be sucked in by the hype: The Three Big Lies About JavaScript.
You need to learn some proper software engineering languages. I would strongly recommend one (or more) of the following: JavaPythonC++Go, C#, Ruby. You might also consider Scala and Clojure. But definitely the first four on the list.
Java is the de facto enterprise standard. There are far more job postings for Java than for any other language. It’s heavily used for web development, mobile, desktop, cloud computing, etc.
Python is immensely popular and versatile. It’s really easy to learn. It’s used just about everywhere, esp. in the financial industry and numerical/engineering computing.
C++ is prized for its superb native execution speed and its prowess in writing complex, large-scale applications. It’s used everywhere in the financial industry, numerical and scientific computing, game development, real-time systems, desktop applications, etc.
Go is the ultimate pragmatic software engineering language, esp. in a team environment (where members may have varying skill levels). It’s destined to be one of the top languages of IT. If it’s big and complex, Go is your “go to” language. Ahem.
Matt West
Matt Westthreequals for the win
116 Views • Matt has 270+ answers in Computer Programming
With all due respect for Mr. Eng’s experience, you need to learn JavaScript. There are two reasons for this that have nothing to do with the details of any one language.
JavaScript is THE language for client side programming. This is what it was invented to do, and what has made it the most popular programming language in the world. In modern web applications, most work is done on the client side, and that means JavaScript.
Node.js is a very popular backend framework, usually paired with Express.js and technologies like Angular or React, as well as with a database of some kind. It is modular, relatively simple to work with, and all in JavaScript. If you don’t learn JS you’ll be cutting yourself out of the fastest rising technology in web development.
The good news is that there is a very good resource for learning JavaScript and Node, and that is Free Code Camp: Learn to code and help nonprofits
If you’ve got a good grasp of HTML and CSS you can skip those lessons and move on to the projects.
Good luck!
Raymond Gonzalez
Raymond GonzalezSelf Taught
165 Views • Raymond has 30+ answers in Computer Programming
Python or javascript (ruby is also a good choice, php isn’t a bad choice) , invest in learning nodejs. Seriously learn Javascript!
Kirk Augustin
Kirk AugustinMS Computer Science, Software Eng., 45 years.
35 Views
For someone intending to do web sites, and has already done VB.net, your best choices are likely JavaScript for client side event handling, or C# for server side scripting.
Visual Basic for .Net is likely on the decline and replaced by C#. And both are mostly for server side scripting. The universal client side is determined by the web browsers, which currently only support JavaScript for DOM manipulations.
These are not your only choices, because another way that mobile can work is to download whole apps in a language like Java. In which case there is no html at all, but the client has to have the Java vm installed, which currently is mostly for Android. For Apple apps, you would likely want to learn Swift instead.
So you have to decide on the area of interest.
Andrea Ferro
Andrea FerroKnows a few programming languages. Learning a few more.
168 Views
Considering that you basically only know VB as a programming language I’d say that learning any language will be a huge improvement on your skills as a programmer.
You say you want to do web development and mobile.
For Android your best choice is Java.
For iOS you need either Objective-C or Swift, with Swift being the newer and higher level one and Objective-C remaining mostly for lower level code.
For web development you need JavaScript on the client side. On the server side it depends on what you are developing. There are many options, each with its own perks and flipsides. Popular and marketable ones include Java, Clojure, Python, Go, Scala, JavaScript, Ruby (losing popularity lately), PHP. You almost certainly also want to learn SQL.

The above answers your question as asked pointing you to languages that you are going to need and use to do what you plan to do. But there's another possible take. That is how to improve your skills as a developer overall, regardless of the language you need to use.
You can do that by studying miltiple languages which are different from each other, regardless of how much you are going to use them. If you do this you learn them as an exercise for your mind, not necessarily for their marketability (just like when you hit the gym you do not lift weights because those weights need to be displaced and you do not run on the threadmill because you need to go somewhere).
From this point of view you should then learn at least 5 or 6 languages making sure they are very different and they do things differently.
  1. I suggest: C, Smalltalk, CommonLisp, Haskell, Prolog. You should then also have a look at Racket, Forth, Eiffel, either APL or J, either Agda or Idris and learn at least one assembler.
Kei Eith
Kei Eith
22 Views
Since you are already familiar with Visual Studio, you might want to try C#.

Comments

Popular posts from this blog

Short Story Idea

eCommerce