The different types of values we can store in variables are called data types. So far we have only seen numeric data types (integers and floating-point numbers), but we are just scratching the surface. We can store text data in variables as well.
In coding terminology, a piece of text is called a string. We can store a string value in our variable x by surrounding it in either single or double quotes:
let x = 'Hello there!'; let y = "Hey bud!";
The next data type we’ll discuss is the boolean. A boolean can only hold one of two values, true or false – and they must be all lowercase. In JavaScript, true and false are two keywords used specifically as values for boolean variables:
let x = true; let y = false;
Note that the values true and false don’t appear within quotes the way strings do. If we surround them with quotes, the values would be strings, not booleans.
We often use booleans to control the flow of programs in conditional (if/else) statements which we’ll learn about next.
ADVERTISEMENT
Program Flow Control Statements in JavaScript
Now that we have an understanding of variables and the basic JavaScript data types, let’s take a look at some things we can do with them.
Variables aren't that useful without being able to tell our code to do something with them. We can make our variables do things by using statements.
Statements are special keywords that allow us to perform some action in our code, often based on the value of a variable we have defined. Statements let us define the logical flow of our programs, as well as perform many useful actions that will dictate how our programs work.
If / Else Statement
The first statement we’ll discuss is the if statement. The if statement allows us to perform some action only when a desired condition is true. Here is how it works:
let x = 10; if ( x > 5 ) { console.log('X is GREATER than 5!'); } else { console.log('X is NOT GREATER than 5!'); }
We defined a variable called x and set its value to 10. Then comes our if statement. After the keyword if, we have a set of parentheses containing the condition to evaluate, in this case, x > 5. We just defined x to equal 10, so we know that this condition is true in this example.
Since the condition in the parentheses is true, the code between the curly braces will be executed, and we will see the string "X is GREATER than 5!" printed to the screen. (We didn't discuss the meaning of console.log(), so for now just know that it prints the value in the parentheses to the screen).
In the same example, we also included an else statement. This allows us to execute specific code in the event that the condition in the condition is false.
ADVERTISEMENT
While Loops
The next type of statement we’ll discuss is the while loop. Loops enable us to repeat a block of code as many times as we desire, without copying and pasting the code over and over again.
For example, let’s assume we need to print a sentence to the screen 5 times. We could do it like this:
console.log('This is a very important message!'); console.log('This is a very important message!'); console.log('This is a very important message!'); console.log('This is a very important message!'); console.log('This is a very important message!');
This works fine for only 5 messages, but what about 100, or 1000? We need a better way to repeat pieces of code multiple times, and loops allow us to do this. In coding terminology, repeating a piece of code multiple times is called iteration.
This following while loop will continue running the block of code inside it as long as the specified condition remains true:
let x = 1; while ( x <= 100 ) { console.log('This is a very important message!'); x = x + 1; }
In this example, we initialize x to the value of 1. Then we write a while loop. Similar to the if statement, we add a condition in parentheses. In this case the condition is x <= 100. This condition will be true as long as x is less than or equal to 100.
In coding terminology, a piece of text is called a string. We can store a string value in our variable x by surrounding it in either single or double quotes:
let x = 'Hello there!'; let y = "Hey bud!";
The next data type we’ll discuss is the boolean. A boolean can only hold one of two values, true or false – and they must be all lowercase. In JavaScript, true and false are two keywords used specifically as values for boolean variables:
let x = true; let y = false;
Note that the values true and false don’t appear within quotes the way strings do. If we surround them with quotes, the values would be strings, not booleans.
We often use booleans to control the flow of programs in conditional (if/else) statements which we’ll learn about next.
ADVERTISEMENT
Program Flow Control Statements in JavaScript
Now that we have an understanding of variables and the basic JavaScript data types, let’s take a look at some things we can do with them.
Variables aren't that useful without being able to tell our code to do something with them. We can make our variables do things by using statements.
Statements are special keywords that allow us to perform some action in our code, often based on the value of a variable we have defined. Statements let us define the logical flow of our programs, as well as perform many useful actions that will dictate how our programs work.
If / Else Statement
The first statement we’ll discuss is the if statement. The if statement allows us to perform some action only when a desired condition is true. Here is how it works:
let x = 10; if ( x > 5 ) { console.log('X is GREATER than 5!'); } else { console.log('X is NOT GREATER than 5!'); }
We defined a variable called x and set its value to 10. Then comes our if statement. After the keyword if, we have a set of parentheses containing the condition to evaluate, in this case, x > 5. We just defined x to equal 10, so we know that this condition is true in this example.
Since the condition in the parentheses is true, the code between the curly braces will be executed, and we will see the string "X is GREATER than 5!" printed to the screen. (We didn't discuss the meaning of console.log(), so for now just know that it prints the value in the parentheses to the screen).
In the same example, we also included an else statement. This allows us to execute specific code in the event that the condition in the condition is false.
ADVERTISEMENT
While Loops
The next type of statement we’ll discuss is the while loop. Loops enable us to repeat a block of code as many times as we desire, without copying and pasting the code over and over again.
For example, let’s assume we need to print a sentence to the screen 5 times. We could do it like this:
console.log('This is a very important message!'); console.log('This is a very important message!'); console.log('This is a very important message!'); console.log('This is a very important message!'); console.log('This is a very important message!');
This works fine for only 5 messages, but what about 100, or 1000? We need a better way to repeat pieces of code multiple times, and loops allow us to do this. In coding terminology, repeating a piece of code multiple times is called iteration.
This following while loop will continue running the block of code inside it as long as the specified condition remains true:
let x = 1; while ( x <= 100 ) { console.log('This is a very important message!'); x = x + 1; }
In this example, we initialize x to the value of 1. Then we write a while loop. Similar to the if statement, we add a condition in parentheses. In this case the condition is x <= 100. This condition will be true as long as x is less than or equal to 100.
Next we specify the block of code to execute in the curly braces. First, we print out our message to the console. Then we increment x by 1.
At this point the loop attempts to re-evaluate the condition to see if it’s still true. Variable x now has a value of 2 since it was incremented in the first loop run. The condition is still true since 2 is less than 100.
The code in the loop repeats until x gets incremented to the value of 101. At this point, x is greater than 100 so the condition is now false, and the code in the loop stops executing.
The HTML <script> Tag
Now that we’ve introduced JavaScript, let’s discuss how to add JavaScript code files into an HTML page. We can do this using an HTML tag that we haven’t discussed yet – the <script> tag.
This is similar to the <link> element that we used to add CSS files to our HTML, except that the <script> element is specifically for JavaScript.
Let’s say we saved one of the previous JavaScript examples we discussed in a file called customscript.js in the same folder as our HTML file. We can add this JavaScript file to our HTML by adding the following HTML tag into the <head>...</head> section of our HTML:
<script type="text/javascript" src="customscript.js"></script>
This will load in the JavaScript code from the file, which will execute when the web page is displayed in the browser.
Once you get comfortable with your JavaScript skills, you can try building some of these fun beginner-friendly projects to practice.
ADVERTISEMENT
9) Continue Programming with Python
Now that you've learned some basic JavaScript, it will be useful to jump into another programming language – Python.
Many programming languages provide a similar set of functionality, including variables, arithmetic operators, if/else statements, loops, and functions.
It's helpful to see how different programming languages implement similar features. The concepts are usually very similar, but the syntax (the way the code is written) varies from language to language.
What is Python?
First we’ll cover a little bit of background information on Python. Like JavaScript, Python is a high- level programming language that prioritizes ease of development over the speed of execution.
In my opinion, Python is one of the best languages for beginners to learn. The syntax is clean and intuitive and it is a very popular language in the open-source and business spheres.
Earlier we talked about compiled languages versus interpreted languages. Python is an interpreted language. Each time we want to run a Python program, the Python interpreter actively processes your code and executes it line by line on your machine.
This is different than compiled languages, in which we would first use a compiler to process the code into a more optimized form (an executable), and then execute it later.
Unlike JavaScript, Python was not built to be run directly inside web browsers. Python was created to be a convenient scripting language – a language that can be used to write code for arbitrary tasks that usually execute on a user’s local computer.
Python code can be executed on any computer that has the Python interpreter installed on it. It is still a commonly used scripting language but is also used extensively for data science and server-side applications.
ADVERTISEMENT
Variables and Assignment in Python
Like JavaScript, Python allows us to define variables. In Python we can simply use the equals sign to create and assign variables as needed:
x = 10 y = "cheese"
There are two differences between the syntax for defining variables in Python and JavaScript. In Python, we don’t need the let keyword and we also don’t need a semi-colon at the end of each line.
Python uses a set of syntax rules based off of whitespace and indentation. This removes the need for line terminating characters like the semi-colon, and block scoping using curly braces.
Data Types in Python
At this point the loop attempts to re-evaluate the condition to see if it’s still true. Variable x now has a value of 2 since it was incremented in the first loop run. The condition is still true since 2 is less than 100.
The code in the loop repeats until x gets incremented to the value of 101. At this point, x is greater than 100 so the condition is now false, and the code in the loop stops executing.
The HTML <script> Tag
Now that we’ve introduced JavaScript, let’s discuss how to add JavaScript code files into an HTML page. We can do this using an HTML tag that we haven’t discussed yet – the <script> tag.
This is similar to the <link> element that we used to add CSS files to our HTML, except that the <script> element is specifically for JavaScript.
Let’s say we saved one of the previous JavaScript examples we discussed in a file called customscript.js in the same folder as our HTML file. We can add this JavaScript file to our HTML by adding the following HTML tag into the <head>...</head> section of our HTML:
<script type="text/javascript" src="customscript.js"></script>
This will load in the JavaScript code from the file, which will execute when the web page is displayed in the browser.
Once you get comfortable with your JavaScript skills, you can try building some of these fun beginner-friendly projects to practice.
ADVERTISEMENT
9) Continue Programming with Python
Now that you've learned some basic JavaScript, it will be useful to jump into another programming language – Python.
Many programming languages provide a similar set of functionality, including variables, arithmetic operators, if/else statements, loops, and functions.
It's helpful to see how different programming languages implement similar features. The concepts are usually very similar, but the syntax (the way the code is written) varies from language to language.
What is Python?
First we’ll cover a little bit of background information on Python. Like JavaScript, Python is a high- level programming language that prioritizes ease of development over the speed of execution.
In my opinion, Python is one of the best languages for beginners to learn. The syntax is clean and intuitive and it is a very popular language in the open-source and business spheres.
Earlier we talked about compiled languages versus interpreted languages. Python is an interpreted language. Each time we want to run a Python program, the Python interpreter actively processes your code and executes it line by line on your machine.
This is different than compiled languages, in which we would first use a compiler to process the code into a more optimized form (an executable), and then execute it later.
Unlike JavaScript, Python was not built to be run directly inside web browsers. Python was created to be a convenient scripting language – a language that can be used to write code for arbitrary tasks that usually execute on a user’s local computer.
Python code can be executed on any computer that has the Python interpreter installed on it. It is still a commonly used scripting language but is also used extensively for data science and server-side applications.
ADVERTISEMENT
Variables and Assignment in Python
Like JavaScript, Python allows us to define variables. In Python we can simply use the equals sign to create and assign variables as needed:
x = 10 y = "cheese"
There are two differences between the syntax for defining variables in Python and JavaScript. In Python, we don’t need the let keyword and we also don’t need a semi-colon at the end of each line.
Python uses a set of syntax rules based off of whitespace and indentation. This removes the need for line terminating characters like the semi-colon, and block scoping using curly braces.
Data Types in Python
Python also has a set of data types that we can assign to our variables. These include integers, floating-point numbers (decimals), strings, lists, and dictionaries.
Integers, floating-point numbers, and strings are essentially the same as their JavaScript counterparts, so we won’t repeat that information here.
In Python, booleans are very similar to those in JavaScript, except that the keywords True and False must be capitalized:
x = True y = False
ADVERTISEMENT
Program Flow Control Statements
Like in JavaScript, Python has as similar set of flow control statements, but with slightly different syntax.
If / Else Statement
This is the Python equivalent of the if/else example we saw in the JavaScript section:
x = 10 if ( x > 5 ): print('X is GREATER than 5!') else: print('X is NOT GREATER than 5!')
We defined a variable called x and set its value to 10, followed by our if statement. Since the condition in the parentheses evaluates to True, the code indented after the if statement will be executed, and we will see the string 'X is GREATER than 5!' printed to the screen.
In Python, we use the print() function for printing information to the screen.
Also note the else statement above, which will print an alternative string to the screen if x if the condition is False.
There are two main differences between the Python code above and the JavaScript code we saw previously. Python uses a colon instead of curly braces to indicate the beginning of the if statement block.
In addition, the indentation of the print() function actually matters in Python. In JavaScript, the indentation or white space between statements doesn’t matter since JavaScript identifies code blocks using curly braces and identifies the end of a statement using a semi-colon. But in this Python example, there are no semi-colons and no curly braces!
That is because Python actually uses the white space and newline characters to identify the end of statements and code blocks.
The colon tells the Python interpreter that the if block is starting. The code that makes up the if block must be indented (1 tab = 4 spaces is the convention) for the Python interpreter to know that it is a part of the if block. The next unindented line will signal the end of the if block.
ADVERTISEMENT
While Loops
Next we’ll discuss loops in Python. The while loop in Python is essentially the same as we saw in JavaScript, but with the Python syntax:
x = 1 while ( x <= 100 ): print('This is a very important message!') x = x + 1 print('This is not in the loop!')
The differences between this while loop and the JavaScript version are that:
We removed the let when defining our variables.
We removed line-ending semicolons.
We replaced the curly braces with a colon.
We made sure that the code in the loop is indented with a tab.
We printed an additional message outside of the loop to show that unindented lines of code are not a part of the loop and won't be repeated.
For beginner Pythonistas, I recommend taking a peek at the Zen of Python, which is a list of 20 rules-of-thumb for writing Pythonic code.
And when you get comfortable with the basics, try building some of these fun beginner-friendly Python projects.
10) Further Your Knowledge with Java
Now that we’ve worked with a couple of higher-level programming languages, let’s take it one step lower with Java.
Unlike JavaScript and Python which execute source code in real time using an interpreter, Java is a compiled language. This means a compiler is used (instead of an interpreter) to convert Java source code into a form the computer can understand.
Most compilers generate one or more executable files made up of machine code that are ready to run on the specific operating system and hardware platform they were compiled for.
But Java is somewhat special in that it compiles the Java source code into an intermediate form called bytecode. This is different than the machine code that most other compiled languages produce. Java bytecode is intended to be executed by something called the Java Virtual Machine (JVM).
Integers, floating-point numbers, and strings are essentially the same as their JavaScript counterparts, so we won’t repeat that information here.
In Python, booleans are very similar to those in JavaScript, except that the keywords True and False must be capitalized:
x = True y = False
ADVERTISEMENT
Program Flow Control Statements
Like in JavaScript, Python has as similar set of flow control statements, but with slightly different syntax.
If / Else Statement
This is the Python equivalent of the if/else example we saw in the JavaScript section:
x = 10 if ( x > 5 ): print('X is GREATER than 5!') else: print('X is NOT GREATER than 5!')
We defined a variable called x and set its value to 10, followed by our if statement. Since the condition in the parentheses evaluates to True, the code indented after the if statement will be executed, and we will see the string 'X is GREATER than 5!' printed to the screen.
In Python, we use the print() function for printing information to the screen.
Also note the else statement above, which will print an alternative string to the screen if x if the condition is False.
There are two main differences between the Python code above and the JavaScript code we saw previously. Python uses a colon instead of curly braces to indicate the beginning of the if statement block.
In addition, the indentation of the print() function actually matters in Python. In JavaScript, the indentation or white space between statements doesn’t matter since JavaScript identifies code blocks using curly braces and identifies the end of a statement using a semi-colon. But in this Python example, there are no semi-colons and no curly braces!
That is because Python actually uses the white space and newline characters to identify the end of statements and code blocks.
The colon tells the Python interpreter that the if block is starting. The code that makes up the if block must be indented (1 tab = 4 spaces is the convention) for the Python interpreter to know that it is a part of the if block. The next unindented line will signal the end of the if block.
ADVERTISEMENT
While Loops
Next we’ll discuss loops in Python. The while loop in Python is essentially the same as we saw in JavaScript, but with the Python syntax:
x = 1 while ( x <= 100 ): print('This is a very important message!') x = x + 1 print('This is not in the loop!')
The differences between this while loop and the JavaScript version are that:
We removed the let when defining our variables.
We removed line-ending semicolons.
We replaced the curly braces with a colon.
We made sure that the code in the loop is indented with a tab.
We printed an additional message outside of the loop to show that unindented lines of code are not a part of the loop and won't be repeated.
For beginner Pythonistas, I recommend taking a peek at the Zen of Python, which is a list of 20 rules-of-thumb for writing Pythonic code.
And when you get comfortable with the basics, try building some of these fun beginner-friendly Python projects.
10) Further Your Knowledge with Java
Now that we’ve worked with a couple of higher-level programming languages, let’s take it one step lower with Java.
Unlike JavaScript and Python which execute source code in real time using an interpreter, Java is a compiled language. This means a compiler is used (instead of an interpreter) to convert Java source code into a form the computer can understand.
Most compilers generate one or more executable files made up of machine code that are ready to run on the specific operating system and hardware platform they were compiled for.
But Java is somewhat special in that it compiles the Java source code into an intermediate form called bytecode. This is different than the machine code that most other compiled languages produce. Java bytecode is intended to be executed by something called the Java Virtual Machine (JVM).
You can think of the JVM as a program that you install on your computer, which allows you to run Java programs by executing Java bytecode. When people talk about "whether or not Java is installed on a computer," they are usually asking whether or not the JVM is installed on the computer.
The JVM serves a similar function to the interpreters we discussed in previous chapters. But instead of taking source code (which is stored in .java files) as an input, it takes compiled bytecode.
The benefit of this setup is that it allows bytecode compiled on particular operating systems and platforms to be executed by a JVM on any other platform.
For example, imagine we have a file of Java code that was written and compiled to bytecode on a computer running the Windows operating system. This bytecode can be executed (that is, the program can be run) by a JVM on any platform, including Windows, Mac OS, Linux, and so on.
This is not the case with most compiled executables in other programming languages, which can only execute in the environment which they were compiled for.
ADVERTISEMENT
Variables and Assignment in Java
One major difference between Java and the languages we have seen so far (Python and JavaScript) is that Java is a statically typed language.
This means that the data types of our variables must be known and established at the time the program is compiled.
Each time we create a variable in Java code, we need to explicitly specify the data type of that variable, such as an integer, string, and so on. This is called variable declaration.
Once we declare a variable’s data type, it can only hold that type of data throughout the execution of the program.
This is very different from JavaScript and Python, where variable data types are established during program execution, also known as run time. Languages like JavaScript and Python are therefore referred to as dynamically typed languages – we don’t explicitly state variable data types in our source code and can easily reassign a variable to any type on the fly.
In Java, we create variables using this syntax:
Datatype name = value;
Here the Datatype is the type of data that the variable will store, such as Integer, String, and so on. Next, the name represents the name of the variable we are defining so we can use it in our code. The value is the actual value we are assigning to the variable. Note that like JavaScript, all Java statements end in a semicolon.
Data Types in Java
In Java, the basic built-in data types are called the primitive data types and they will look very familiar based on what we have seen in higher-level languages like Python and JavaScript. The main primitive types are:
Integer int: Stores whole numbers between −2,147,483,648 and 2,147,483,647.
Float float: Stores decimal numbers between 3.4x10^−038 to 3.4x10^038.
Boolean bool: Stores one of the two boolean values true or false.
Note that there are a few other primitive types (short, long, byte, and double) that we won’t be covering here since they aren’t used as often as the others. Here is how we initialize these data types:
Integer: int x = 100;
Float: float pi = 3.14;
Char: char middleInitial = 'T';
Boolean: bool isHuman = true;
I do want to reiterate that once the data type of a variable is declared, that variable can only hold values of the specified data type.
For example, an error would be thrown if our program tried to store a character value inside a variable that was declared to be an integer. We can’t assign the character 'S' to the integer variable x in the previous example.
The next data type we’ll discuss is the string – a sequence of characters, numbers, or symbols represented as textual data.
Strings in Java are a non-primitive data type, which means they are built up from smaller parts. To declare a string variable we use the String data type and place the assigned value in double-quotes:
String name = "Harry Potter";
ADVERTISEMENT
Program Flow Control Statements in Java
The JVM serves a similar function to the interpreters we discussed in previous chapters. But instead of taking source code (which is stored in .java files) as an input, it takes compiled bytecode.
The benefit of this setup is that it allows bytecode compiled on particular operating systems and platforms to be executed by a JVM on any other platform.
For example, imagine we have a file of Java code that was written and compiled to bytecode on a computer running the Windows operating system. This bytecode can be executed (that is, the program can be run) by a JVM on any platform, including Windows, Mac OS, Linux, and so on.
This is not the case with most compiled executables in other programming languages, which can only execute in the environment which they were compiled for.
ADVERTISEMENT
Variables and Assignment in Java
One major difference between Java and the languages we have seen so far (Python and JavaScript) is that Java is a statically typed language.
This means that the data types of our variables must be known and established at the time the program is compiled.
Each time we create a variable in Java code, we need to explicitly specify the data type of that variable, such as an integer, string, and so on. This is called variable declaration.
Once we declare a variable’s data type, it can only hold that type of data throughout the execution of the program.
This is very different from JavaScript and Python, where variable data types are established during program execution, also known as run time. Languages like JavaScript and Python are therefore referred to as dynamically typed languages – we don’t explicitly state variable data types in our source code and can easily reassign a variable to any type on the fly.
In Java, we create variables using this syntax:
Datatype name = value;
Here the Datatype is the type of data that the variable will store, such as Integer, String, and so on. Next, the name represents the name of the variable we are defining so we can use it in our code. The value is the actual value we are assigning to the variable. Note that like JavaScript, all Java statements end in a semicolon.
Data Types in Java
In Java, the basic built-in data types are called the primitive data types and they will look very familiar based on what we have seen in higher-level languages like Python and JavaScript. The main primitive types are:
Integer int: Stores whole numbers between −2,147,483,648 and 2,147,483,647.
Float float: Stores decimal numbers between 3.4x10^−038 to 3.4x10^038.
Boolean bool: Stores one of the two boolean values true or false.
Note that there are a few other primitive types (short, long, byte, and double) that we won’t be covering here since they aren’t used as often as the others. Here is how we initialize these data types:
Integer: int x = 100;
Float: float pi = 3.14;
Char: char middleInitial = 'T';
Boolean: bool isHuman = true;
I do want to reiterate that once the data type of a variable is declared, that variable can only hold values of the specified data type.
For example, an error would be thrown if our program tried to store a character value inside a variable that was declared to be an integer. We can’t assign the character 'S' to the integer variable x in the previous example.
The next data type we’ll discuss is the string – a sequence of characters, numbers, or symbols represented as textual data.
Strings in Java are a non-primitive data type, which means they are built up from smaller parts. To declare a string variable we use the String data type and place the assigned value in double-quotes:
String name = "Harry Potter";
ADVERTISEMENT
Program Flow Control Statements in Java
Like JavaScript, Java uses curly braces to define code blocks for if statements, loops, and functions. We’ll examine the same program control statements as in the previous chapters and update the examples to use the Java syntax.
If / Else Statement
Here is the Java if/else statement that mirrors the examples in the previous sections:
int x = 10; if ( x > 5 ) { System.out.println("X is GREATER than 5!"); } else { System.out.println("X is NOT GREATER than 5!"); }
This basic if example is almost identical to the JavaScript version. The only differences are we declared the datatype of x to be int and we using System.out.println() instead of console.log() to print out our message.
Next, we’ll move on to loops in Java. Since Java and JavaScript syntax are quite similar, the while loop in Java is essentially the same as we saw in JavaScript:
int x = 1; while ( x <= 100 ) { System.out.println("This is a very important message!"); x = x + 1; }
This while loop will print out the specified message 100 times.
This concludes our sections on specific programming languages. It may have been a bit repetitive since we covered the same set of concepts in 3 languages, but hopefully this helped hammer in these basic but fundamental ideas.
Now we'll round out this article with a few in-between topics that you might not otherwise start learning right away.
We'll talk about an essential collaboration tool called Git. Then we'll learn to store and access data in a database. Next we'l briefly touch on Web development frameworks, and finally we'll shed some light on package managers.
ADVERTISEMENT
11) Track Your Code Using Git
Git is the most popular Version Control System (VCS) in use today. It allows multiple developers to collaborate on software together. In this section we’ll learn what Git is, how it works, and how to use its basic commands.
Before jumping straight into Git, let’s flesh out some concepts common to most programming projects.
The full set of directories and files that make up a software project is called a codebase. The project root is the highest-level folder in the project’s directory tree. Code files can be included directly in the project root or organized into multiple levels of folders.
When the codebase is ready for testing or deployment it can be built into the program that will run on your computer. The build process can include one or more steps that convert the code written by humans into an executable that can be run on your computer’s processing chips.
Once the code is built, your program is ready to run on your specific operating system, such as Linux, Mac OS, or Windows.
Over time, developers update the project code to add new features, fix bugs, implement security updates, and more. In general, there are three ways developers can make these changes to a software project:
Add new files and folders to the project
Edit the code in existing files and folders
Delete existing files and folders
As projects grow and new features are added, the number of files and folders (as well as the amount of code within them) increases. Large projects can grow up to hundreds of thousands of files containing millions of lines of code.
To support this growth, the number of developers on large project teams typically increases. Large software projects can have hundreds or even thousands of developers all working in tandem.
This begs the question: "How the heck do all these developers, who may be geographically spread out all around the world, keep track of their software project code in such a way that they can work together on a single project?"
Development teams need a way to keep track of exactly what changes were made to the code, which files or folders were affected, and who made each change. Each developer also needs to be able to obtain updates from all other developers.
If / Else Statement
Here is the Java if/else statement that mirrors the examples in the previous sections:
int x = 10; if ( x > 5 ) { System.out.println("X is GREATER than 5!"); } else { System.out.println("X is NOT GREATER than 5!"); }
This basic if example is almost identical to the JavaScript version. The only differences are we declared the datatype of x to be int and we using System.out.println() instead of console.log() to print out our message.
Next, we’ll move on to loops in Java. Since Java and JavaScript syntax are quite similar, the while loop in Java is essentially the same as we saw in JavaScript:
int x = 1; while ( x <= 100 ) { System.out.println("This is a very important message!"); x = x + 1; }
This while loop will print out the specified message 100 times.
This concludes our sections on specific programming languages. It may have been a bit repetitive since we covered the same set of concepts in 3 languages, but hopefully this helped hammer in these basic but fundamental ideas.
Now we'll round out this article with a few in-between topics that you might not otherwise start learning right away.
We'll talk about an essential collaboration tool called Git. Then we'll learn to store and access data in a database. Next we'l briefly touch on Web development frameworks, and finally we'll shed some light on package managers.
ADVERTISEMENT
11) Track Your Code Using Git
Git is the most popular Version Control System (VCS) in use today. It allows multiple developers to collaborate on software together. In this section we’ll learn what Git is, how it works, and how to use its basic commands.
Before jumping straight into Git, let’s flesh out some concepts common to most programming projects.
The full set of directories and files that make up a software project is called a codebase. The project root is the highest-level folder in the project’s directory tree. Code files can be included directly in the project root or organized into multiple levels of folders.
When the codebase is ready for testing or deployment it can be built into the program that will run on your computer. The build process can include one or more steps that convert the code written by humans into an executable that can be run on your computer’s processing chips.
Once the code is built, your program is ready to run on your specific operating system, such as Linux, Mac OS, or Windows.
Over time, developers update the project code to add new features, fix bugs, implement security updates, and more. In general, there are three ways developers can make these changes to a software project:
Add new files and folders to the project
Edit the code in existing files and folders
Delete existing files and folders
As projects grow and new features are added, the number of files and folders (as well as the amount of code within them) increases. Large projects can grow up to hundreds of thousands of files containing millions of lines of code.
To support this growth, the number of developers on large project teams typically increases. Large software projects can have hundreds or even thousands of developers all working in tandem.
This begs the question: "How the heck do all these developers, who may be geographically spread out all around the world, keep track of their software project code in such a way that they can work together on a single project?"
Development teams need a way to keep track of exactly what changes were made to the code, which files or folders were affected, and who made each change. Each developer also needs to be able to obtain updates from all other developers.
This process is called versioning or version control. Developers use special tools called Version Control Systems (VCS) to track, manage, and share the versions of software projects. Here are a few popular version control systems that are actively used these days:
Git
Subversion (SVN)
Mercurial (Hg)
However, Git has won the crown as the go-to VCS of the day. It is by far the most popular VCS in use by government, commercial, and open-source communities worldwide.
Git forms the core of popular web-based VCS platforms like GitHub and Bitbucket. Git is an essential tool for any well-rounded developer to add to their skill set.
Basic Git Commands
Git creates and stores information about our software projects in something called a Git repository. A Git repository is just a hidden folder on your computer that Git uses to store data about the code files in a software project.
Each software project we work on typically has its own Git repository for storing information related to that project. This way, code related to different projects on a single computer can be tracked separately.
There are two main ways to create a Git repository on your computer. The first is to create a brand new Git repository in an existing folder on your file system.
To do this, simply open up the Command Line, create a new folder somewhere convenient like on your Desktop, and browse into it:
cd ~/Desktop mkdir testgit cd testgit/
Now that we created a new folder and browsed into it, we can initialize a new Git repository using the command:
git init
You should see some output similar to the following:
Initialized empty Git repository in /Users/me/Desktop/testgit/.git/
All of the Git commands we’ll run start with the word git followed by a space and then the specific Git command we would like to run. Sometimes we’ll add flags and arguments after the Git commands as well.
The git init command creates a hidden folder called .git in the current directory. This folder is the Git repository we mentioned above. You can see this by running the command ls -al.
The second way to get a Git repository on to your computer is to download one from somewhere else, like Bitbucket or GitHub.
Bitbucket and Github are websites that allow people to host open source projects that can be downloaded to your computer.
If you browse to a project you find interesting on Bitbucket or GitHub, you’ll see a button labeled Clone. This button will provide you a command and URL that you can copy and paste into the command line terminal. It will look something like this:
git clone https://jacobstopak@bitbucket.org/jacobstopak/baby-git.git
The git clone command downloads the repository from the specified URL into a new folder on your computer. The URL can either be a web URL as in the example above or an SSH URL as follows:
git clone git@bitbucket.org:jacobstopak/baby-git.git
After running the git clone command, you should see a new folder created. If you browse into it, you’ll see all of the files and subfolders that make up the project you downloaded.
The next command we'll mention is git add <filename.ext>. The git add command is used to tell Git which files we want it to track, and to add changes in already tracked files to Git's staging area.
Once new or changes files have been staged, they can be committed to the repository by using the command git commit -m "Commit message". This will store the changes in all staged files in the Git repository.
The git status and git log commands are handy for reviewing the current state of the working directory and the commit history of your project.
We barely scratched the surface here. Git has many more essential commands which are definitely worth getting comfortable with.
ADVERTISEMENT
12) Store Data Using Databases and SQL
A database is a program specifically designed to efficiently store, update, retrieve, and delete large amounts of data. In a nutshell, we can think of a database as a container for a set of tables.
Git
Subversion (SVN)
Mercurial (Hg)
However, Git has won the crown as the go-to VCS of the day. It is by far the most popular VCS in use by government, commercial, and open-source communities worldwide.
Git forms the core of popular web-based VCS platforms like GitHub and Bitbucket. Git is an essential tool for any well-rounded developer to add to their skill set.
Basic Git Commands
Git creates and stores information about our software projects in something called a Git repository. A Git repository is just a hidden folder on your computer that Git uses to store data about the code files in a software project.
Each software project we work on typically has its own Git repository for storing information related to that project. This way, code related to different projects on a single computer can be tracked separately.
There are two main ways to create a Git repository on your computer. The first is to create a brand new Git repository in an existing folder on your file system.
To do this, simply open up the Command Line, create a new folder somewhere convenient like on your Desktop, and browse into it:
cd ~/Desktop mkdir testgit cd testgit/
Now that we created a new folder and browsed into it, we can initialize a new Git repository using the command:
git init
You should see some output similar to the following:
Initialized empty Git repository in /Users/me/Desktop/testgit/.git/
All of the Git commands we’ll run start with the word git followed by a space and then the specific Git command we would like to run. Sometimes we’ll add flags and arguments after the Git commands as well.
The git init command creates a hidden folder called .git in the current directory. This folder is the Git repository we mentioned above. You can see this by running the command ls -al.
The second way to get a Git repository on to your computer is to download one from somewhere else, like Bitbucket or GitHub.
Bitbucket and Github are websites that allow people to host open source projects that can be downloaded to your computer.
If you browse to a project you find interesting on Bitbucket or GitHub, you’ll see a button labeled Clone. This button will provide you a command and URL that you can copy and paste into the command line terminal. It will look something like this:
git clone https://jacobstopak@bitbucket.org/jacobstopak/baby-git.git
The git clone command downloads the repository from the specified URL into a new folder on your computer. The URL can either be a web URL as in the example above or an SSH URL as follows:
git clone git@bitbucket.org:jacobstopak/baby-git.git
After running the git clone command, you should see a new folder created. If you browse into it, you’ll see all of the files and subfolders that make up the project you downloaded.
The next command we'll mention is git add <filename.ext>. The git add command is used to tell Git which files we want it to track, and to add changes in already tracked files to Git's staging area.
Once new or changes files have been staged, they can be committed to the repository by using the command git commit -m "Commit message". This will store the changes in all staged files in the Git repository.
The git status and git log commands are handy for reviewing the current state of the working directory and the commit history of your project.
We barely scratched the surface here. Git has many more essential commands which are definitely worth getting comfortable with.
ADVERTISEMENT
12) Store Data Using Databases and SQL
A database is a program specifically designed to efficiently store, update, retrieve, and delete large amounts of data. In a nutshell, we can think of a database as a container for a set of tables.
You have probably worked with tables in Microsoft Excel. A table is just a set of columns and rows containing data. We can set up tables in a database to store the information that our programs need to work properly.
Whether we are writing programs in JavaScript, Python, Java, or some other language, we can tell our programs to interact with databases as needed.
We can retrieve data from the database to display to our users on a web page. We can accept a web sign-up form from a user and store that user’s information in a database for later use.
Our programs can interact with databases in real-time as events transpire in our application. To do this, most databases speak a language called SQL, short for Structured Query Language.
SQL is a programming language specifically created for databases. It allows us to tell databases what to do.
A chunk of SQL code is called a query. We can write SQL queries to fetch the data we need at a particular time or to insert new data into a specific table. Roughly speaking there are two main types of SQL queries: read-SQL and write-SQL.
A read-SQL query is one that simply fetches data from the database for us to see or use. It doesn’t change the data in the database at all.
On the other hand, a write-SQL query either inserts new data into a table, updates existing data, or deletes existing data. We’ll learn how to write some basic read-SQL queries in this section.
Before writing a query, it helps to know what we are querying! Traditional databases contain tables made up of columns and rows. When we write a read-SQL query, our goal is usually to retrieve a subset of those rows and columns.
For example, let's say we have a table called PERSON with 4 columns, FIRST_NAME and LAST_NAME. We can use the following query to select all the data from only the FIRST_NAME column:
SELECT FIRST_NAME FROM PERSON;
The SELECT keyword tells the database that we want to retrieve data. It is followed by the name of the column – FIRST_NAME – that we want to get.
Then we use the FROM keyword to tell the database which table we want to get the data from, in this case, the PERSON table. Also, note that all SQL commands are terminated by a semi-colon.
One of the most common requirements we have with data is to filter it. Filtering means restricting the result set based on a specified condition.
For example, we might only want to select rows from the PERSON table for people who are named "PHIL". We can apply filters in SQL queries using the WHERE keyword:
SELECT * FROM PERSON WHERE FIRST_NAME = 'PHIL';
This query would return all columns in the PERSON table since we used an asterisk * in the SELECT clause instead of listing specific column names. Only rows in the PERSON table where the FIRST_NAME is set to "PHIL" would be retrieved.
Lastly, we’ll talk about sorting. There are many times when we’d like to see our query results sorted in a particular order. We can use the ORDER BY clause for this:
SELECT * FROM PERSON ORDER BY LAST_NAME;
This will return all columns in the PERSON table sorted alphabetically by last name.
By default, the results will be sorted in ascending order, from A to Z. We can add the optional ASC or DESC keyword, to specify whether to sort in ascending or descending order:
SELECT * FROM PERSON ORDER BY LAST_NAME DESC;
13) Read About Web Frameworks and MVC
Oftentimes, we’ll find ourselves writing code for very common types of applications. Web applications (or web apps) are applications that rely on the Internet in order to function. Webapps are some of the most commonly created types of software applications.
A web app is essentially a more functional and robust version of a website. Most web apps implement some backend code that resides on a web server and performs logic behind the scenes to support the application’s functionality.
Common programming languages to use for a web app’s backend code include Python, Java, and JavaScript, among others.
Some functionalities common to most web apps include:
Whether we are writing programs in JavaScript, Python, Java, or some other language, we can tell our programs to interact with databases as needed.
We can retrieve data from the database to display to our users on a web page. We can accept a web sign-up form from a user and store that user’s information in a database for later use.
Our programs can interact with databases in real-time as events transpire in our application. To do this, most databases speak a language called SQL, short for Structured Query Language.
SQL is a programming language specifically created for databases. It allows us to tell databases what to do.
A chunk of SQL code is called a query. We can write SQL queries to fetch the data we need at a particular time or to insert new data into a specific table. Roughly speaking there are two main types of SQL queries: read-SQL and write-SQL.
A read-SQL query is one that simply fetches data from the database for us to see or use. It doesn’t change the data in the database at all.
On the other hand, a write-SQL query either inserts new data into a table, updates existing data, or deletes existing data. We’ll learn how to write some basic read-SQL queries in this section.
Before writing a query, it helps to know what we are querying! Traditional databases contain tables made up of columns and rows. When we write a read-SQL query, our goal is usually to retrieve a subset of those rows and columns.
For example, let's say we have a table called PERSON with 4 columns, FIRST_NAME and LAST_NAME. We can use the following query to select all the data from only the FIRST_NAME column:
SELECT FIRST_NAME FROM PERSON;
The SELECT keyword tells the database that we want to retrieve data. It is followed by the name of the column – FIRST_NAME – that we want to get.
Then we use the FROM keyword to tell the database which table we want to get the data from, in this case, the PERSON table. Also, note that all SQL commands are terminated by a semi-colon.
One of the most common requirements we have with data is to filter it. Filtering means restricting the result set based on a specified condition.
For example, we might only want to select rows from the PERSON table for people who are named "PHIL". We can apply filters in SQL queries using the WHERE keyword:
SELECT * FROM PERSON WHERE FIRST_NAME = 'PHIL';
This query would return all columns in the PERSON table since we used an asterisk * in the SELECT clause instead of listing specific column names. Only rows in the PERSON table where the FIRST_NAME is set to "PHIL" would be retrieved.
Lastly, we’ll talk about sorting. There are many times when we’d like to see our query results sorted in a particular order. We can use the ORDER BY clause for this:
SELECT * FROM PERSON ORDER BY LAST_NAME;
This will return all columns in the PERSON table sorted alphabetically by last name.
By default, the results will be sorted in ascending order, from A to Z. We can add the optional ASC or DESC keyword, to specify whether to sort in ascending or descending order:
SELECT * FROM PERSON ORDER BY LAST_NAME DESC;
13) Read About Web Frameworks and MVC
Oftentimes, we’ll find ourselves writing code for very common types of applications. Web applications (or web apps) are applications that rely on the Internet in order to function. Webapps are some of the most commonly created types of software applications.
A web app is essentially a more functional and robust version of a website. Most web apps implement some backend code that resides on a web server and performs logic behind the scenes to support the application’s functionality.
Common programming languages to use for a web app’s backend code include Python, Java, and JavaScript, among others.
Some functionalities common to most web apps include:
Providing a convenient way to dynamically alter content on web pages
Performing secure user authentication via a login page
Providing robust application security features
Reading and writing data to a database
A web framework is a set of code libraries that contain the common functionalities that all web apps use out of the box. Web frameworks provide a system for developers to build their applications without having to worry about writing the code for many of the behind the scenes tasks common to all web apps.
We only need to utilize the parts of the framework that meet the needs of our web app.
For example, if we don’t need to connect to a database in a particular web app, we can just ignore the database features and use the other features that we do need.
We still have the full ability to customize the web pages that make up our application, the user flow, and the business logic. You can think of a web framework as a programming tool suite that we can use to build web apps.
Each programming language we covered in this article has one or more popular web frameworks currently in use. This is great because it gives development teams the flexibility to use the framework of the language that they are the most proficient in.
Java has the Spring Framework that's made especially convenient via Spring Boot. Python has the Django Framework. JavaScript has the Node.js runtime environment with the multiple framework options including Express.js and Meteor.js. These frameworks are all free and open-source.
ADVERTISEMENT
14) Play with Package Managers
The final topic that we’ll cover in this guidebook is the package manager. Depending on the context, a package can either represent a standalone program that is ready to install on a computer or an external code library that we want to leverage in one of our software projects.
Since our applications often depend on these external code libraries, we also refer to them as dependencies.
A package manager is a program that helps us maintain the dependencies of a system or software project. By "maintain" we mean installing, updating, listing, and uninstalling the dependencies as needed.
Depending on the context, the package managers we’ll discuss can either be used to maintain the programs we have installed on our operating systems or to maintain the dependencies of a software project.
Mac OS X: Homebrew
Homebrew is the most popular package manager for the Mac OS X operating system. It offers a convenient way to install, update, track, list, and uninstall packages and applications on your Mac.
Many applications that can be installed via downloaded .dmg files can also be downloaded and installed using Homebrew.
Here is an example of installing the wget package via Homebrew:
brew install wget
ADVERTISEMENT
Linux: Apt and Yum
Since Linux was built around the Command Line, it’s no surprise that package managers are the default way to install programs.
Most mainstream flavors of Linux ship with a built-in package manager. Advanced Package Tool (APT) is the native package manager for Debian and Ubuntu-based Linux distributions. Yellowdog Updater, Modified (YUM) is the native package manager for the RedHat Linux distribution.
Here is an example of installing Vim using APT:
sudo apt-get install vim
And using Yum:
sudo yum install vim
JavaScript: Node Package Manager (NPM)
Now that we have seen how some OS-level package managers work, let’s take a look at some programming language-specific package managers. These can help us manage the software libraries that many of our coding projects depend on. Node Package Manager (NPM) is installed by default with Node.js.
One difference between NPM and the previous package managers we have seen is that NPM can be run in local or global mode. Local mode is used to install a package only within a particular project/directory we are working on, while global mode is used to install the package on the system.
By default, packages are installed locally, but you can use the -g flag to install a package globally:
Performing secure user authentication via a login page
Providing robust application security features
Reading and writing data to a database
A web framework is a set of code libraries that contain the common functionalities that all web apps use out of the box. Web frameworks provide a system for developers to build their applications without having to worry about writing the code for many of the behind the scenes tasks common to all web apps.
We only need to utilize the parts of the framework that meet the needs of our web app.
For example, if we don’t need to connect to a database in a particular web app, we can just ignore the database features and use the other features that we do need.
We still have the full ability to customize the web pages that make up our application, the user flow, and the business logic. You can think of a web framework as a programming tool suite that we can use to build web apps.
Each programming language we covered in this article has one or more popular web frameworks currently in use. This is great because it gives development teams the flexibility to use the framework of the language that they are the most proficient in.
Java has the Spring Framework that's made especially convenient via Spring Boot. Python has the Django Framework. JavaScript has the Node.js runtime environment with the multiple framework options including Express.js and Meteor.js. These frameworks are all free and open-source.
ADVERTISEMENT
14) Play with Package Managers
The final topic that we’ll cover in this guidebook is the package manager. Depending on the context, a package can either represent a standalone program that is ready to install on a computer or an external code library that we want to leverage in one of our software projects.
Since our applications often depend on these external code libraries, we also refer to them as dependencies.
A package manager is a program that helps us maintain the dependencies of a system or software project. By "maintain" we mean installing, updating, listing, and uninstalling the dependencies as needed.
Depending on the context, the package managers we’ll discuss can either be used to maintain the programs we have installed on our operating systems or to maintain the dependencies of a software project.
Mac OS X: Homebrew
Homebrew is the most popular package manager for the Mac OS X operating system. It offers a convenient way to install, update, track, list, and uninstall packages and applications on your Mac.
Many applications that can be installed via downloaded .dmg files can also be downloaded and installed using Homebrew.
Here is an example of installing the wget package via Homebrew:
brew install wget
ADVERTISEMENT
Linux: Apt and Yum
Since Linux was built around the Command Line, it’s no surprise that package managers are the default way to install programs.
Most mainstream flavors of Linux ship with a built-in package manager. Advanced Package Tool (APT) is the native package manager for Debian and Ubuntu-based Linux distributions. Yellowdog Updater, Modified (YUM) is the native package manager for the RedHat Linux distribution.
Here is an example of installing Vim using APT:
sudo apt-get install vim
And using Yum:
sudo yum install vim
JavaScript: Node Package Manager (NPM)
Now that we have seen how some OS-level package managers work, let’s take a look at some programming language-specific package managers. These can help us manage the software libraries that many of our coding projects depend on. Node Package Manager (NPM) is installed by default with Node.js.
One difference between NPM and the previous package managers we have seen is that NPM can be run in local or global mode. Local mode is used to install a package only within a particular project/directory we are working on, while global mode is used to install the package on the system.
By default, packages are installed locally, but you can use the -g flag to install a package globally:
npm install request -g
ADVERTISEMENT
Python: Pip
Python also has a package manager called Pip. Pip may already be installed on your system as it comes prepackaged with recent versions of Python. Pip allows us to easily install packages from the Python Package Index using the pip install <package-name> command:
pip install requests
Java: Apache Maven
Apache Maven (usually referred to as simply Maven) is a free and open-source tool suite that includes dependency management.
Maven is mostly used for Java projects although it does support other languages as well. Maven usage is a bit more complicated and it can do a lot of things, so we won't get into the weeds here.
ADVERTISEMENT
Summary
In this article, I introduced a set of essential coding concepts and tools with the intention of presenting a bird’s eye view of software development that I wish I had when I started learning to code.
I covered topics including the Internet, several programming languages, version control systems, and databases with the goal of describing how these pieces of the puzzle fit together.
Next Steps
If you enjoyed this article, I wrote a book called the Coding Essentials Guidebook for Developers which has 14 chapters, each covering one of the topics discussed in this post.
ADVERTISEMENT
Python: Pip
Python also has a package manager called Pip. Pip may already be installed on your system as it comes prepackaged with recent versions of Python. Pip allows us to easily install packages from the Python Package Index using the pip install <package-name> command:
pip install requests
Java: Apache Maven
Apache Maven (usually referred to as simply Maven) is a free and open-source tool suite that includes dependency management.
Maven is mostly used for Java projects although it does support other languages as well. Maven usage is a bit more complicated and it can do a lot of things, so we won't get into the weeds here.
ADVERTISEMENT
Summary
In this article, I introduced a set of essential coding concepts and tools with the intention of presenting a bird’s eye view of software development that I wish I had when I started learning to code.
I covered topics including the Internet, several programming languages, version control systems, and databases with the goal of describing how these pieces of the puzzle fit together.
Next Steps
If you enjoyed this article, I wrote a book called the Coding Essentials Guidebook for Developers which has 14 chapters, each covering one of the topics discussed in this post.
لینک دانلود مستقیم پریمیر ۲۰۲۴ با حجم ۲گیگابایت
https://dl2.soft98.ir/adobe/Adobe.Premiere.Pro.24.0.0.58.x64.rar?1697797412
دانلود افتر افکت ۲۰۲۴ با حجم ۳.۲ گیگابایت
https://dl2.soft98.ir/adobe/Adobe.After.Effects.24.0.0.55.x64.rar?1697797452
دانلود مدیا انکودر ۲۰۲۴ با حجم ۱.۱
https://dl2.soft98.ir/adobe/Adobe.Media.Encoder.24.0.0.54.rar?1697797514
@samanniknezhad
https://dl2.soft98.ir/adobe/Adobe.Premiere.Pro.24.0.0.58.x64.rar?1697797412
دانلود افتر افکت ۲۰۲۴ با حجم ۳.۲ گیگابایت
https://dl2.soft98.ir/adobe/Adobe.After.Effects.24.0.0.55.x64.rar?1697797452
دانلود مدیا انکودر ۲۰۲۴ با حجم ۱.۱
https://dl2.soft98.ir/adobe/Adobe.Media.Encoder.24.0.0.54.rar?1697797514
@samanniknezhad
An_bZhZHxWxUZrAIybuU2fi0Z5w7Lml2h9DEHX1bfLUGQ0vgG9JschavDRlx3lr.pdf
651.4 KB
Programming language road map for AI
Adobe.Premiere.Pro.24.4.1.002.x64.rar
2.2 GB
جدید ترین نسخه کرک شده پریمیر 24
24.4.1.002
پسورد:soft98.ir (خداپدرتیمشونو بیامرزه)
نکته ای که هست اینه که تو این نسخه باید کلا دسترسی پریمیر رو به اینترنت قطع کنید وگرنه وسط کار برنامه رو میبنده(این ادوبی خیلی کثافت شده جدیدا)
24.4.1.002
پسورد:soft98.ir (خداپدرتیمشونو بیامرزه)
نکته ای که هست اینه که تو این نسخه باید کلا دسترسی پریمیر رو به اینترنت قطع کنید وگرنه وسط کار برنامه رو میبنده(این ادوبی خیلی کثافت شده جدیدا)
https://t.me/Binance_Moonbix_bot/start?startapp=ref_1917500179&startApp=ref_1917500179
Join the Moonbix adventure and be rewarded with special rewards from Binance!
Join the Moonbix adventure and be rewarded with special rewards from Binance!
Telegram
Moonbix
Moonbix is a Binance crypto-themed game on Telegram Mini App game. Explore the galaxy, collect items, and boost your score!

