রিয়েক্ট কি এবং কেন?

এই আর্টিকেলে আমরা জানার চেষ্টা করবো রিয়েক্ট কি এবং কেন আমাদের রিয়েক্ট ব্যবহার করা উচিত। তবে, মুল লেখায় যাওয়ার আগে কিছু কথা। এটি মূলত একটি সিরিজ হবে যেখানে রিয়েক্ট উপর একদম বেসিক থেকে লেখা হবে। কিন্তু এই সিরিজে জাভাস্ক্রিপ্ট নিয়ে কোন প্রকার আলোচনা করা হবে না। তাই যাদের জাভাস্ক্রিপ্টের বেসিক সম্পর্কে ধারণা নেই তাদেরকে বলবো আগে বেসিকটা শিখে তারপর এই লেখাটা কন্টিনিউ করতে।

রিয়েক্ট কি?

রিয়েক্ট হচ্ছে সম্পূর্ণ ওপেন-সোর্স জাভাস্ক্রিপ্টের একটি লাইব্রেরী যা ইউজার ইন্টারফেস তৈরি করার জন্যে ব্যবহার করা হয়। বিশেষ করে সিঙ্গেল পেইজ অ্যাপ্লিকেশন ও ওয়েব এবং মোবাইলের ভিউ লেয়ার তৈরি করতে ব্যহার করা হয়। এটি ডিক্লেয়ারেটিভ এবং কম্পোনেন্ট-বেইসড একটি ইউআই লাইব্রেরী। যা ২০১১ সালে ফেইসবুক তাদের নিউজফিডে ডেপ্লয় করে এবং ২০১২ সালে ইন্সটাগ্রামে ব্যবহার করা হয়।

রিয়েক্টের ফিচারগুলি কি কি?

রিয়েক্টের কিছু গুরুত্বপূর্ণ ফিচার নিচে দেওয়া হল। ফিচারগুলোর উপর সামনে বিস্তারিত লেখা আসবে। – জেএসএক্স

  • ডিক্লেয়ারেটিভ
  • কম্পোনেন্টস
  • ওয়ান-ওয়ে ডাটা বাইন্ডিং
  • ভার্চুয়াল ডম
  • স্ট্যাট-ম্যানেজমেন্ট

রিয়েক্ট কেন?

এখন, আমাদের সামনে আসল প্রশ্ন আমাদের কেন রিয়েক্ট ব্যবহার করা উচিত। যেখানে বেশ কিছু ওপেন-সোর্স ফ্ল্যাটফর্ম আছে ফ্রন্ট-এন্ড ডেভেলপমেন্ট জীবন সহজ করার জন্যে। যেমন- অ্যাঙ্গুলার, ভিউ ইত্যাদি। নিচে কিছুর পয়েন্ট উল্লেখ্য করছি কেন আমাদে রিয়েক্ট ব্যবহার করা উচিত। – সিমপ্লিসিটি

  • ইজি -টু-লার্ন
  • ন্যাটিভ অ্যাপ্রোচ
  • ডাটা বাইন্ডিং
  • পার্ফরমেন্স
  • এসইও ফ্রেন্ডলি
  • টেস্টাবিলিটি

রিয়েক্ট শিখতে কি কি জানা লাগবে?

  • জাভাস্ক্রিপ্টের বেসিক সম্পর্কে পরিষ্কার ধারণা থাকা লাগবে
  • যেকোনো একটি টেক্সট এডিটর বা আইডিই থাকা লাগবে
  • নোড জেএস ইন্সটল করা থাকা লাগবে
  • ইয়ার্ন বা এনপিএম ইন্সটল থাকা লাগবে (আমি ব্যক্তিগতভাবে ইয়ার্ন ব্যবহার করি)

আজকের জন্যে এখানেই শেষ করছি। আগামী পর্ব থেকে আমরা রিয়েক্ট শিখা শুরু করবো ইনশাআল্লা।

এখানে ক্লিক করে লেখকের ব্যক্তিগত ব্লগেও পড়তে পারবেন

loops in Golang

Every programming language has some kind of loop for repeatedly executing a block of code. Programming languages like C/C++, C#, Python, Nodejs etc have their own way of writing loops. Among different types of loops the most common one is the for loop which almost all programming languages implement.

Example of a "for" loop

type Node struct {
    Next  *Node
    Value interface{}
}
var first *Node

visited := make(map[*Node]bool)
for n := first; n != nil; n = n.Next {
    if visited[n] {
        fmt.Println("cycle detected")
        break
    }
    visited[n] = true
    fmt.Println(n.Value)
}

In the above example we traverse a linked list of Nodes and show it’s value, along the way we also detect if any cyclic relation present in the linked list.

As other programming languages implement different types of loops like while, for, foreach, do…while etc. On the other hand golang takes a different approach writing different types of loops using a single keyword for which we can say is a universal "for" loop.

Why universal, you may ask?

As other programming languages implement different types of loops, golang makes it’s "for" loop act as all(almost) types of loop.

Different types of loop in golang

1. Basic "for" loop or Three component loop

for init; condition; post_statement {
     loop body
}

This is the basic way of writing a for loop in every programming language.

// Golang version
total := 0
for i := 1; i < 5; i++ {
    total += i
}
fmt.Println(total) // (1+2+3+4) = 10

Summary of the above code:
we initialize the total variable to be 0. Then we initialize the for loop by saying – In the init statement we initialize the local variable i to 0 which scope is limited to the for loop.

  • We put a condition statement. i < 5, which will be checked every time the loop starts again.
    • if true, the loops body code will be executed
    • if false, the loops done with the execution.
  • The post statement runs after the condition, and the loop body is executed. in the above code example it's incremented by 1.
  • Back to step 2

2. "foreach" loop

for index, value := range array {
     fmt.Println(`%v %v`, index, value)
}

Many languages give foreach to traverse or loop over elements of an array of items, maps etc. In Golang foreach loop can be easily achieved by using a for loop.

// Golang version
slice = []int{1,2,3} // array without a limit called slice
for i, v := range slice {
    fmt.Println(i, v)
}
// Output
0 1
1 2
2 3

3. "While" loop

while condition {
     fmt.Println(i)
     i++ // i will be used to break from the loop
}

Generally, we use for loops when we know how many times the loop should run. On the other hand if we need to run a loop to fulfil a certain condition then we can use while loop. In golang we also use the "for" to write a while loop as golang doesn't provide a while keyword for writing it.we write it like the for loop but ignoring the init and post_statement part of a three component loop.

// Golang version
i := 1
for i < 5 {
    i *= 2
}
fmt.Println(i) // (1*2*2*2) = 8

Summary of the above code:
we initialize the i variable to be 1. Then we initialize the "for" loop

  1. We check the condition statement. i < 5, which will be checked every time the loop starts again.
    • if true, the loops body code will be executed
    • if false, the loop is done with the execution.
  2. Back to step 1

4. "Infinite" loop

In the coding world we sometimes need to write an infinite loop. In other programming languages we use the while loop to write this.

n := 1
while true {
     fmt.Println(n) // this will repeat forever
}

For golang we also achieve this by writing a for loop.

// Golang version
i := 1
for {
    i++ // this will repeat forever
}
fmt.Println(i) // this line will never be executed.

we just ignore the condition part of a while loop to make the loop statement an infinite loop.Also note that if we want to break from an infinite loop we need to put a base condition inside the infinite loop.

// Golang version
i := 1
for {
    i++
    if i > 10 {
        break // will break the infinite loop when i value reach 10
    }
}
fmt.Println(i) // 11

5. "do…while" loop

The basic idea of a "do…while" loop is to run a block of code at least one time then check the condition

  • if true, the loops body code will be executed.
  • if false, the loops done with the execution.
do {
     print(i)
     i++ // i will be used to break from the loop
} while(i < 10)

So golang we can write the above scenario in two ways

// 1st way
for ok := true; ok; ok = condition {
    work()
}
// 2nd way
for {
    work()
    if !condition {
        break
    }
}

In summary a "do…while" loop, the condition will be checked after the code block runs at least once.

This post also published as github gist.

Conclusion

As other programming language gives different keywords and syntax for writing loops, golang takes a slightly different approach and make it's for loop act as other loops. So now we can conclude our post by saying "Golangs for loop, can act as universal loop."