├── .github └── workflows │ └── main.yml ├── .gitignore ├── LICENSE ├── README.md ├── gatsby-browser.js ├── gatsby-config.js ├── package.json ├── src ├── @rocketseat │ └── gatsby-theme-docs │ │ ├── components │ │ ├── Logo.js │ │ ├── Person.jsx │ │ ├── SL3_LOGO.png │ │ └── Social.jsx │ │ └── text │ │ └── index.mdx ├── config │ └── sidebar.yml ├── docs │ ├── applications │ │ ├── android.mdx │ │ ├── ios.mdx │ │ └── learn-more.mdx │ ├── framework │ │ ├── contributors.mdx │ │ ├── sponsors.mdx │ │ └── supporters.mdx │ ├── fundamental-courses │ │ ├── c-programming.mdx │ │ ├── java.mdx │ │ ├── javascript.mdx │ │ ├── overview.mdx │ │ └── python.mdx │ ├── kickstart.mdx │ ├── learning-techniques │ │ ├── contribute-knowledge.mdx │ │ ├── learning-methods.mdx │ │ ├── personal-blog.mdx │ │ └── social-learning.mdx │ ├── motivation.mdx │ ├── next │ │ ├── challenges.mdx │ │ ├── examples.mdx │ │ └── what-next.mdx │ ├── problem-solving │ │ ├── after-solved-a-problem.mdx │ │ ├── competitive-programming.mdx │ │ ├── guides.mdx │ │ └── strategy.mdx │ ├── program │ │ ├── java.mdx │ │ ├── javascript.mdx │ │ ├── python.mdx │ │ └── what-is-sl3-program.mdx │ ├── programming-fundamentals │ │ ├── arrays.mdx │ │ ├── conditions.mdx │ │ ├── functions.mdx │ │ ├── languages.mdx │ │ ├── loops.mdx │ │ ├── operators.mdx │ │ ├── overview.mdx │ │ ├── statements.mdx │ │ └── variables.mdx │ ├── pseudo-code.mdx │ ├── purpose-of-computer.mdx │ ├── purpose-of-programming.mdx │ └── why-do-we-learn-programming.mdx ├── pages │ └── 404.js └── styles │ └── global.css ├── static ├── array1.png ├── array2.jpg ├── array3.jpg ├── banner.png ├── binary-world.jpg ├── coming-soon.png ├── computer-is-dumb.jpg ├── condition1.jpg ├── condition2.jpg ├── condition3.jpg ├── courses-c.jpg ├── courses-java.jpg ├── courses-js.jpg ├── courses-python.jpg ├── data-is-everything.jpg ├── favicon-32x32.png ├── favicon.png ├── fonts │ ├── KohinoorBangla-Bold.otf │ ├── KohinoorBangla-Light.otf │ ├── KohinoorBangla-Medium.otf │ ├── KohinoorBangla-Regular.otf │ ├── KohinoorBangla-Semibold.otf │ └── fonts.css ├── high-salary.jpg ├── hmnayem.png ├── loop1.jpg ├── online-class.jpg ├── operator1.jpg ├── operator2.png ├── operator3.png ├── program-java.jpg ├── program-js.jpg ├── program-python.jpg ├── programming-fundamentals.jpg ├── robots.txt ├── variable1.jpg ├── variable2.jpg ├── variable3.png ├── variable4.png ├── variable5.jpg ├── variable6.jpg └── variable7.png └── yarn.lock /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Gatsby Publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - dev 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v1 13 | - uses: enriikke/gatsby-gh-pages-action@v2 14 | with: 15 | access-token: ${{ secrets.SL3_FRAMEWORK }} 16 | deploy-branch: gh-pages 17 | gatsby-args: --prefix-paths 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # dotenv environment variable files 55 | .env* 56 | 57 | # gatsby files 58 | .cache/ 59 | public 60 | 61 | # Mac files 62 | .DS_Store 63 | 64 | # Yarn 65 | yarn-error.log 66 | .pnp/ 67 | .pnp.js 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Rocketseat 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to SL3 Framework 2 | 3 | 11 | 12 | ## SL3 Framework - Code For Brain 13 | 14 | SL3 Framework এর মূল লক্ষ্য এবং উদ্দেশ্য হচ্ছে আপনার প্রোগ্রামিং মাইন্ডসেট তৈরি করা, প্রব্লেম সল্ভিং স্কিল ডেভেলপ করা এবং সব থেকে গুরুত্বপূর্ণ প্রোগ্রামিং ল্যাংগুয়েজের প্রতি ভয় দূর করা। প্রোগ্রামিং হচ্ছে একটা মাইন্ড গেম, আর প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে একটা টুলস যা ব্যবহার করে আমরা কম্পিউটারের সাথে কমিউনিকেট করতে পারি। কিন্তু বর্তমানে আমরা দেখতে পাচ্ছি, স্টুডেন্টরা প্রোগ্রামিংকে ভুলে প্রোগ্রামিং ল্যাংগুয়েজ নিয়েই বেশি মাতামাতি করছে। এবং দিন শেষে বাস্তব জীবনের সমস্যা সমাধান করতে গিয়ে হিমসিম খাচ্ছে। তাদের কথা মাথায় রেখেই এই ফ্রেমওয়ার্ক। এই ফ্রেমওয়ার্ক শেষ করতে করতে প্রোগ্রামিং এর ফান্ডামেন্টাল বিষয় গুলো আপনার মুখের ভাষায় রূপান্তরিত হয়ে যাবে। 15 | 16 |
17 | 18 | ## Purpose of SL3 Framework 19 | 20 | SL3 Framework এর অনেক গুলো উদ্দেশ্য আছে। যদি এক কথায় বলতে চাই তাহলে বলতে হবে আপনাকে প্রোগ্রামার বানানোই এই ফ্রেমওয়ার্কের এক মাত্র উদ্দেশ্য। এছাড়াও এই ফ্রেমওয়ার্কের আরও কিছু উদ্দেশ্য আছে যা নিচে বর্ণনা করা হল - 21 | 22 | ### কম্পিউটার এবং প্রোগ্রামিং ল্যাংগুয়েজের আসল কাজ বুঝতে পারা 23 | 24 | প্রোগ্রামিং এর শুরুতেই যদি আমরা কম্পিউটার এবং প্রোগ্রামিং ল্যাংগুয়েজের আসল কাজ বুঝতে পারি তাহলে প্রোগ্রামিং শেখার যাত্রাটা অনেক সুখকর হয়। বিগিনারদের ভিতরে এই প্রশ্ন গুলো খুবই কমন যে কি শিখবো, কতদূর শিখবো, কেন শিখবো আর কিভাবে শিখবো? যদি আমরা আগে থেকেই আমাদের লিমিটেশন জানতে পারি, বুঝতে পারি যে কম্পিউটার আসলে কি কাজ করে, প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে আমাদের কাজটা কি হবে তাহলে খুব তাড়াতাড়ি আমরা অনেক কিছু শিখে ফেলতে পারবো। 25 | 26 | ### প্রোগ্রামিং ফান্ডামেন্টালস সম্পর্কে জ্ঞান অর্জন করা 27 | 28 | পৃথিবীতে প্রোগ্রামিং ল্যাংগুয়েজ আছে কয়েক হাজার। প্রতিটা ল্যাংগুয়েজ তার নিজস্ব সত্তা ধারণ করে আছে। প্রতিটা ল্যাংগুয়েজের ফিলসফি সম্পূর্ণ ভিন্ন। তবে প্রতিটা ল্যাঙ্গুয়েজই কিছু ফান্ডামেন্টাল বিষয় মেনে চলে। এই ফান্ডামেন্টাল বিষয় গুলোই আসলে প্রোগ্রামিং এবং আপনি যদি এই বিষয় গুলো আয়ত্ত করতে পারেন তাহলে মোটামোটি বিগিনার লেভেলের সমস্ত সমস্যা সমাধান করতে পারবেন। একদম শুরুতেই আপনার ল্যাংগুয়েজের গভীরে যাওয়ার কোনো দরকার নেই। এমনকি বিভিন্ন অনলাইন জাজে প্রব্লেম সল্ভ করতেও আপনার শুধুমাত্র এই ফান্ডামেন্টাল বিষয় গুলোই দরকার হবে। আমরা অন্য রকম ভাবে গল্পের মাধ্যমে বাস্তব জীবনের সমস্যা গুলোর সাথে তুলনা করে এই ফান্ডামেন্টাল বিষয় গুলো বোঝানোর চেষ্টা করেছি। 29 | 30 | ### প্রব্লেম ফাইন্ডিং, প্রব্লেম সল্ভিং এবং প্রব্লেম ব্রেকডাউন করতে পারা 31 | 32 | আমাদের ফ্রেমওয়ার্কের অন্যতম মূল উদ্দেশ্য হচ্ছে আপনাকে প্রোগ্রামার বানানো। আর আপনি একজন ভালো প্রোগ্রামার তখনই হতে পারবেন যখন আপনি একজন ভালো প্রব্লেম সল্ভার হবেন। বিগিনারদের একটা কমন কমপ্লেইন হচ্ছে, কেউ সমাধান করে দিলে বুঝতে পারি কিন্তু নিজে সমাধান করতে পারি না। এর পিছনে একটা বড় কারণ হচ্ছে তারা প্রব্লেম ব্রেকডাউন করতে পারে না। আমাদের ফ্রেমওয়ার্কের সব থেকে বড় উদ্দেশ্য হচ্ছে আপনাকে একজন প্রব্লেম সল্ভার বানানো। আর তার জন্য আমরা ছয়টা স্টেপে একটা সমস্যা সমাধান করে দেখিয়েছি। 33 | 34 | ### লার্নিং প্রোসেস খুঁজে বের করা যেটা কার্যকর 35 | 36 | পৃথিবীতে সবার শেখার প্রসেস ভিন্ন। কেউ বই পড়ে শিখতে ভালোবাসে, কেউ টিউটোরিয়াল দেখে আবার কেউ অন্যকে শেখানোর মাধ্যমে শিখতে পছন্দ করে। কেউ সকালে শিখে, কেউ আবার রাত গভীর না হলে শিখতেই পারে না। কারোর সাথে কারোর মিল নেই। তবে আমরা প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ শেখার কিছু প্রোসেস খুঁজে বের করেছি। আমাদের বিশ্বাস এই প্রোসেস এর ভিতর দিয়ে যদি আপনি যান তাহলে আপনার শেখার জার্নিটা অনেক ছোট হবে আবার জ্ঞান অর্জনেও কোনো ঘাটতি থাকবে না। 37 | 38 | ### সাইকোলজিক্যালি প্রোগ্রামিংকে আপনার অভ্যাসে পরিণত করা 39 | 40 | বৈজ্ঞানিক ভাবে প্রমাণিত যদি আপনি কোনো কিছু অভ্যাসে রূপান্তর করতে চান তাহলে সেই কাজটা টানা ২১ দিন ধরে করতে হবে। তাই আমরাও আপনার জন্য ২১ দিনের একটা টানা চ্যালেঞ্জ রাখছি। আপনি আমাদের ফ্রেমওয়ার্ক মেনে ২১ দিনে ২১ টা ভিন্ন ভিন্ন সমস্যার সমাধান করবেন। সমস্যা গুলো আমরাই আপনাদেরকে প্রোভাইড করবো। সমস্যা গুলো খুব বেশি জটিল হবে না, কিন্তু আপনাকে আমাদের দেখানো নিয়ম মেনেই সমস্যা গুলোর সমাধান তৈরি করতে হবে। আমাদের বিশ্বাস ২১ দিন পরে আপনি অন্য রকম আপনাকে আবিষ্কার করবেন। 41 | 42 |
43 | ## SL3 Mobile Application 44 | 45 | আমরা খুব দ্রুতই আমাদের ফ্রেমওয়ার্ক ব্যবহার করে Android এবং iOS এর অ্যাপলিকেশন তৈরি করার প্লান করছি। সেখানে বিভিন্ন লেভেলের ১০০+ প্রোগ্রামিং সমস্যা থাকবে। প্রতিটা স্টেপ ট্রাক করার সিস্টেম থাকবে। আপনার ডেইলি, উইকলি এবং মান্থলি প্রোগ্রেস চেক করার অপশন থাকবে। আপনি নিজে বিভিন্ন সমস্যা তৈরি করে কমিউনিটিতে শেয়ার করতে পারবেন এবং কমিউনিটিতে আপনার র‍্যাংক যাচাই করতে পারবেন। এছাড়াও আরও মজাদার অনেক ফিচার থাকবে এই অ্যাপলিকেশনটিতে। 46 | 47 | ![SL3 APP - Coming Soon](/coming-soon.png) 48 | 49 | ## Who can Learn from SL3 Framework 50 | 51 | এই ফ্রেমওয়ার্কটার চিন্তা যখন আমাদের মাথায় আসে তখন আমরা শুধুমাত্র চিন্তা করছিলাম তাদেরকে নিয়ে যারা অনেক দিন প্রোগ্রামিং ল্যাংগুয়েজ নিয়ে ঘাঁটাঘাঁটি করার পরেও কোনো ভাবে লজিক বিউল্ড করতে পারছে না। পরবর্তীতে আমরা একদম বিগিনারদেরকেও এই ফ্রেমওয়ার্কের অন্তর্ভুক্ত করার চিন্তা করি। যেই জন্য আমরা প্রোগ্রামিং ফান্ডামেন্টালস এর ওপরে অনেক বেশি জোর দেওয়ার চেষ্টা করেছি। সহজ কথায় বললে, প্রোগ্রামিং শিখতে চায় যে কেউ এই ফ্রেমওয়ার্ক থেকে উপকৃত হবে। খুব বেশি দিন তো না, মাত্র ২১ দিনের চ্যালেঞ্জ আর ফ্রেমওয়ার্কটা বুঝতে সর্বোচ্চ ৯ দিন সময় লাগবে। মাত্র ১ মাস সময় ইনভেস্ট করে যদি ভালো একটা মাইন্ডসেট তৈরি করায় যায় তাহলে ক্ষতি তো নেই, তাই না? 52 | 53 |
54 |
55 |
56 | -------------------------------------------------------------------------------- /gatsby-browser.js: -------------------------------------------------------------------------------- 1 | import './src/styles/global.css'; 2 | -------------------------------------------------------------------------------- /gatsby-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteMetadata: { 3 | siteTitle: `SL3 Framework - Code For Brain`, 4 | defaultTitle: `SL3 Framework - Code For Brain`, 5 | siteTitleShort: `SL3 Framework`, 6 | siteDescription: `SL3 Framework - Stack Learner Language Learning Framework which will force to you think like a computer scientist.`, 7 | siteUrl: `https://sl3.app`, 8 | siteAuthor: `@stacklearner`, 9 | siteImage: `/banner.png`, 10 | siteLanguage: `en`, 11 | themeColor: `#7159c1`, 12 | basePath: `/`, 13 | footer: `Powered By Stack Learner`, 14 | }, 15 | plugins: [ 16 | { 17 | resolve: `@rocketseat/gatsby-theme-docs`, 18 | options: { 19 | configPath: `src/config`, 20 | docsPath: `src/docs`, 21 | githubUrl: `https://github.com/stacklearner/sl3-framework`, 22 | baseDir: `/`, 23 | }, 24 | }, 25 | { 26 | resolve: `gatsby-plugin-manifest`, 27 | options: { 28 | name: `Rocketseat Gatsby Themes`, 29 | short_name: `RS Gatsby Themes`, 30 | start_url: `/`, 31 | background_color: `#ffffff`, 32 | display: `standalone`, 33 | icon: `static/favicon.png`, 34 | }, 35 | }, 36 | `gatsby-plugin-sitemap`, 37 | { 38 | resolve: `gatsby-plugin-google-analytics`, 39 | options: { 40 | trackingId: `UA-176697170-1`, 41 | }, 42 | }, 43 | { 44 | resolve: `gatsby-plugin-canonical-urls`, 45 | options: { 46 | siteUrl: `https://sl3.app`, 47 | }, 48 | }, 49 | `gatsby-plugin-offline`, 50 | { 51 | resolve: 'gatsby-plugin-web-font-loader', 52 | options: { 53 | custom: { 54 | families: ['Kohinoor', 'Roboto'], 55 | urls: ['/fonts/fonts.css'], 56 | }, 57 | }, 58 | }, 59 | { 60 | resolve: `gatsby-remark-responsive-iframe`, 61 | options: { 62 | wrapperStyle: `margin-bottom: 1.0725rem`, 63 | }, 64 | }, 65 | ], 66 | pathPrefix: '/sl3-framework', 67 | }; 68 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gatsby-starter-rocket-docs", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "Out of the box Gatsby Starter for creating documentation websites easily and quickly. With support for MDX, code highlight, Analytics, SEO and more", 6 | "author": "João Pedro Schmitz (@joaopedro_cc)", 7 | "license": "MIT", 8 | "starter-name": "gatsby-starter-rocket-docs", 9 | "dependencies": { 10 | "@rocketseat/gatsby-theme-docs": "latest", 11 | "gatsby": "latest", 12 | "gatsby-plugin-canonical-urls": "^2.1.19", 13 | "gatsby-plugin-google-analytics": "^2.1.34", 14 | "gatsby-plugin-manifest": "^2.2.37", 15 | "gatsby-plugin-offline": "^3.0.32", 16 | "gatsby-plugin-sitemap": "^2.2.26", 17 | "gatsby-plugin-web-font-loader": "^1.0.4", 18 | "gatsby-remark-responsive-iframe": "^2.4.12", 19 | "prop-types": "^15.7.2", 20 | "react": "latest", 21 | "react-dom": "latest" 22 | }, 23 | "devDependencies": {}, 24 | "keywords": [ 25 | "gatsby", 26 | "rocketseat", 27 | "gatsby-starter" 28 | ], 29 | "scripts": { 30 | "build": "gatsby build", 31 | "start": "gatsby develop", 32 | "serve": "gatsby serve", 33 | "clean": "gatsby clean" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/@rocketseat/gatsby-theme-docs/components/Logo.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LogoImage from './SL3_LOGO.png'; 3 | 4 | export default () => ( 5 | SL3 Framework - Code For Brain 10 | ); 11 | -------------------------------------------------------------------------------- /src/@rocketseat/gatsby-theme-docs/components/Person.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const wrapperStyle = { 4 | marginTop: '3rem', 5 | marginBottom: '1rem', 6 | display: 'inline-block', 7 | }; 8 | 9 | const imgWrapperStyle = { 10 | width: '300px', 11 | height: '300px', 12 | borderRadius: '0.5rem', 13 | overflow: 'hidden', 14 | }; 15 | 16 | const imgStyle = { 17 | width: '300px', 18 | height: 'auto', 19 | }; 20 | 21 | const h3Style = { 22 | fontSize: '20px', 23 | fontWeight: 300, 24 | color: '#424242', 25 | marginBottom: '0.8rem', 26 | marginTop: '2rem', 27 | }; 28 | 29 | const pStyle = { 30 | fontSize: '16px', 31 | color: '#666666', 32 | marginBottom: '2rem', 33 | lineHeight: 1, 34 | }; 35 | 36 | const Person = ({ name, company, title, img }) => { 37 | return ( 38 |
39 |
40 | {name 41 |
42 |

{name}

43 |

44 | {title} 45 |
46 | {company} 47 |

48 |
49 | ); 50 | }; 51 | 52 | export default Person; 53 | -------------------------------------------------------------------------------- /src/@rocketseat/gatsby-theme-docs/components/SL3_LOGO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/src/@rocketseat/gatsby-theme-docs/components/SL3_LOGO.png -------------------------------------------------------------------------------- /src/@rocketseat/gatsby-theme-docs/components/Social.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const Social = () => { 4 | return ( 5 | 9 | ); 10 | }; 11 | 12 | export default Social; 13 | -------------------------------------------------------------------------------- /src/@rocketseat/gatsby-theme-docs/text/index.mdx: -------------------------------------------------------------------------------- 1 | # Welcome to SL3 Framework 2 | 3 |
4 | 5 | 13 | 14 | ## SL3 Framework - Code For Brain 15 | 16 | SL3 Framework এর মূল লক্ষ্য এবং উদ্দেশ্য হচ্ছে আপনার প্রোগ্রামিং মাইন্ডসেট তৈরি করা, প্রব্লেম সল্ভিং স্কিল ডেভেলপ করা এবং সব থেকে গুরুত্বপূর্ণ প্রোগ্রামিং ল্যাংগুয়েজের প্রতি ভয় দূর করা। প্রোগ্রামিং হচ্ছে একটা মাইন্ড গেম, আর প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে একটা টুলস যা ব্যবহার করে আমরা কম্পিউটারের সাথে কমিউনিকেট করতে পারি। কিন্তু বর্তমানে আমরা দেখতে পাচ্ছি, স্টুডেন্টরা প্রোগ্রামিংকে ভুলে প্রোগ্রামিং ল্যাংগুয়েজ নিয়েই বেশি মাতামাতি করছে। এবং দিন শেষে বাস্তব জীবনের সমস্যা সমাধান করতে গিয়ে হিমসিম খাচ্ছে। তাদের কথা মাথায় রেখেই এই ফ্রেমওয়ার্ক। এই ফ্রেমওয়ার্ক শেষ করতে করতে প্রোগ্রামিং এর ফান্ডামেন্টাল বিষয় গুলো আপনার মুখের ভাষায় রূপান্তরিত হয়ে যাবে। 17 | 18 |
19 | 20 | ![SL3 Framework - Official Banner](/banner.png) 21 | 22 | ## Purpose of SL3 Framework 23 | 24 | SL3 Framework এর অনেক গুলো উদ্দেশ্য আছে। যদি এক কথায় বলতে চাই তাহলে বলতে হবে আপনাকে প্রোগ্রামার বানানোই এই ফ্রেমওয়ার্কের এক মাত্র উদ্দেশ্য। এছাড়াও এই ফ্রেমওয়ার্কের আরও কিছু উদ্দেশ্য আছে যা নিচে বর্ণনা করা হল - 25 | 26 | ### কম্পিউটার এবং প্রোগ্রামিং ল্যাংগুয়েজের আসল কাজ বুঝতে পারা 27 | 28 | প্রোগ্রামিং এর শুরুতেই যদি আমরা কম্পিউটার এবং প্রোগ্রামিং ল্যাংগুয়েজের আসল কাজ বুঝতে পারি তাহলে প্রোগ্রামিং শেখার যাত্রাটা অনেক সুখকর হয়। বিগিনারদের ভিতরে এই প্রশ্ন গুলো খুবই কমন যে কি শিখবো, কতদূর শিখবো, কেন শিখবো আর কিভাবে শিখবো? যদি আমরা আগে থেকেই আমাদের লিমিটেশন জানতে পারি, বুঝতে পারি যে কম্পিউটার আসলে কি কাজ করে, প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে আমাদের কাজটা কি হবে তাহলে খুব তাড়াতাড়ি আমরা অনেক কিছু শিখে ফেলতে পারবো। 29 | 30 | ### প্রোগ্রামিং ফান্ডামেন্টালস সম্পর্কে জ্ঞান অর্জন করা 31 | 32 | পৃথিবীতে প্রোগ্রামিং ল্যাংগুয়েজ আছে কয়েক হাজার। প্রতিটা ল্যাংগুয়েজ তার নিজস্ব সত্তা ধারণ করে আছে। প্রতিটা ল্যাংগুয়েজের ফিলসফি সম্পূর্ণ ভিন্ন। তবে প্রতিটা ল্যাঙ্গুয়েজই কিছু ফান্ডামেন্টাল বিষয় মেনে চলে। এই ফান্ডামেন্টাল বিষয় গুলোই আসলে প্রোগ্রামিং এবং আপনি যদি এই বিষয় গুলো আয়ত্ত করতে পারেন তাহলে মোটামোটি বিগিনার লেভেলের সমস্ত সমস্যা সমাধান করতে পারবেন। একদম শুরুতেই আপনার ল্যাংগুয়েজের গভীরে যাওয়ার কোনো দরকার নেই। এমনকি বিভিন্ন অনলাইন জাজে প্রব্লেম সল্ভ করতেও আপনার শুধুমাত্র এই ফান্ডামেন্টাল বিষয় গুলোই দরকার হবে। আমরা অন্য রকম ভাবে গল্পের মাধ্যমে বাস্তব জীবনের সমস্যা গুলোর সাথে তুলনা করে এই ফান্ডামেন্টাল বিষয় গুলো বোঝানোর চেষ্টা করেছি। 33 | 34 | ### প্রব্লেম ফাইন্ডিং, প্রব্লেম সল্ভিং এবং প্রব্লেম ব্রেকডাউন করতে পারা 35 | 36 | আমাদের ফ্রেমওয়ার্কের অন্যতম মূল উদ্দেশ্য হচ্ছে আপনাকে প্রোগ্রামার বানানো। আর আপনি একজন ভালো প্রোগ্রামার তখনই হতে পারবেন যখন আপনি একজন ভালো প্রব্লেম সল্ভার হবেন। বিগিনারদের একটা কমন কমপ্লেইন হচ্ছে, কেউ সমাধান করে দিলে বুঝতে পারি কিন্তু নিজে সমাধান করতে পারি না। এর পিছনে একটা বড় কারণ হচ্ছে তারা প্রব্লেম ব্রেকডাউন করতে পারে না। আমাদের ফ্রেমওয়ার্কের সব থেকে বড় উদ্দেশ্য হচ্ছে আপনাকে একজন প্রব্লেম সল্ভার বানানো। আর তার জন্য আমরা ছয়টা স্টেপে একটা সমস্যা সমাধান করে দেখিয়েছি। 37 | 38 | ### লার্নিং প্রোসেস খুঁজে বের করা যেটা কার্যকর 39 | 40 | পৃথিবীতে সবার শেখার প্রসেস ভিন্ন। কেউ বই পড়ে শিখতে ভালোবাসে, কেউ টিউটোরিয়াল দেখে আবার কেউ অন্যকে শেখানোর মাধ্যমে শিখতে পছন্দ করে। কেউ সকালে শিখে, কেউ আবার রাত গভীর না হলে শিখতেই পারে না। কারোর সাথে কারোর মিল নেই। তবে আমরা প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ শেখার কিছু প্রোসেস খুঁজে বের করেছি। আমাদের বিশ্বাস এই প্রোসেস এর ভিতর দিয়ে যদি আপনি যান তাহলে আপনার শেখার জার্নিটা অনেক ছোট হবে আবার জ্ঞান অর্জনেও কোনো ঘাটতি থাকবে না। 41 | 42 | ### সাইকোলজিক্যালি প্রোগ্রামিংকে আপনার অভ্যাসে পরিণত করা 43 | 44 | বৈজ্ঞানিক ভাবে প্রমাণিত যদি আপনি কোনো কিছু অভ্যাসে রূপান্তর করতে চান তাহলে সেই কাজটা টানা ২১ দিন ধরে করতে হবে। তাই আমরাও আপনার জন্য ২১ দিনের একটা টানা চ্যালেঞ্জ রাখছি। আপনি আমাদের ফ্রেমওয়ার্ক মেনে ২১ দিনে ২১ টা ভিন্ন ভিন্ন সমস্যার সমাধান করবেন। সমস্যা গুলো আমরাই আপনাদেরকে প্রোভাইড করবো। সমস্যা গুলো খুব বেশি জটিল হবে না, কিন্তু আপনাকে আমাদের দেখানো নিয়ম মেনেই সমস্যা গুলোর সমাধান তৈরি করতে হবে। আমাদের বিশ্বাস ২১ দিন পরে আপনি অন্য রকম আপনাকে আবিষ্কার করবেন। 45 | 46 |
47 | ## SL3 Mobile Application 48 | 49 | আমরা খুব দ্রুতই আমাদের ফ্রেমওয়ার্ক ব্যবহার করে Android এবং iOS এর অ্যাপলিকেশন তৈরি করার প্লান করছি। সেখানে বিভিন্ন লেভেলের ১০০+ প্রোগ্রামিং সমস্যা থাকবে। প্রতিটা স্টেপ ট্রাক করার সিস্টেম থাকবে। আপনার ডেইলি, উইকলি এবং মান্থলি প্রোগ্রেস চেক করার অপশন থাকবে। আপনি নিজে বিভিন্ন সমস্যা তৈরি করে কমিউনিটিতে শেয়ার করতে পারবেন এবং কমিউনিটিতে আপনার র‍্যাংক যাচাই করতে পারবেন। এছাড়াও আরও মজাদার অনেক ফিচার থাকবে এই অ্যাপলিকেশনটিতে। 50 | 51 | ![SL3 APP - Coming Soon](/coming-soon.png) 52 | 53 | ## Who can Learn from SL3 Framework 54 | 55 | এই ফ্রেমওয়ার্কটার চিন্তা যখন আমাদের মাথায় আসে তখন আমরা শুধুমাত্র চিন্তা করছিলাম তাদেরকে নিয়ে যারা অনেক দিন প্রোগ্রামিং ল্যাংগুয়েজ নিয়ে ঘাঁটাঘাঁটি করার পরেও কোনো ভাবে লজিক বিউল্ড করতে পারছে না। পরবর্তীতে আমরা একদম বিগিনারদেরকেও এই ফ্রেমওয়ার্কের অন্তর্ভুক্ত করার চিন্তা করি। যেই জন্য আমরা প্রোগ্রামিং ফান্ডামেন্টালস এর ওপরে অনেক বেশি জোর দেওয়ার চেষ্টা করেছি। সহজ কথায় বললে, প্রোগ্রামিং শিখতে চায় যে কেউ এই ফ্রেমওয়ার্ক থেকে উপকৃত হবে। খুব বেশি দিন তো না, মাত্র ২১ দিনের চ্যালেঞ্জ আর ফ্রেমওয়ার্কটা বুঝতে সর্বোচ্চ ৯ দিন সময় লাগবে। মাত্র ১ মাস সময় ইনভেস্ট করে যদি ভালো একটা মাইন্ডসেট তৈরি করায় যায় তাহলে ক্ষতি তো নেই, তাই না? 56 | 57 |
58 |
59 |
60 | -------------------------------------------------------------------------------- /src/config/sidebar.yml: -------------------------------------------------------------------------------- 1 | # Sidebar navigation 2 | 3 | - label: 'Welcome' 4 | link: '/' 5 | - label: 'Motivation' 6 | link: '/motivation' 7 | - label: 'Kickstart' 8 | link: '/kickstart' 9 | - label: 'Purpose of Computer' 10 | link: '/purpose-of-computer' 11 | - label: 'Purpose of Programming' 12 | link: '/purpose-of-programming' 13 | - label: 'Why Do We Learn Programming?' 14 | link: '/why-do-we-learn-programming' 15 | - label: 'Pseudo Code' 16 | link: '/pseudo-code' 17 | - label: 'Programming Fundamentals' 18 | items: 19 | - label: 'Overview' 20 | link: '/programming-fundamentals/overview' 21 | - label: 'Variables' 22 | link: '/programming-fundamentals/variables' 23 | - label: 'Operators' 24 | link: '/programming-fundamentals/operators' 25 | - label: 'Conditions' 26 | link: '/programming-fundamentals/conditions' 27 | - label: 'Loops' 28 | link: '/programming-fundamentals/loops' 29 | - label: 'Arrays' 30 | link: '/programming-fundamentals/arrays' 31 | - label: 'Functions' 32 | link: '/programming-fundamentals/functions' 33 | - label: 'Statements' 34 | link: '/programming-fundamentals/statements' 35 | - label: 'Choose Language' 36 | link: '/programming-fundamentals/languages' 37 | - label: 'Problem Solving' 38 | items: 39 | - label: 'Strategy' 40 | link: '/problem-solving/strategy' 41 | - label: 'After Solved A Problem' 42 | link: '/problem-solving/after-solved-a-problem' 43 | - label: 'Competitive Programming' 44 | link: '/problem-solving/competitive-programming' 45 | - label: 'Guides' 46 | link: '/problem-solving/guides' 47 | - label: 'Learning Techniques' 48 | items: 49 | - label: 'Learning Methods' 50 | link: '/learning-techniques/learning-methods' 51 | - label: 'Social Learning' 52 | link: '/learning-techniques/social-learning' 53 | - label: 'Personal Blog' 54 | link: '/learning-techniques/personal-blog' 55 | - label: 'Contribute Knowledge' 56 | link: '/learning-techniques/contribute-knowledge' 57 | - label: 'Next Steps' 58 | items: 59 | - label: 'Examples' 60 | link: '/next/examples' 61 | - label: 'Challenges' 62 | link: '/next/challenges' 63 | - label: 'What Next?' 64 | link: '/next/what-next' 65 | - label: 'Fundamental Courses' 66 | items: 67 | - label: 'Overview' 68 | link: '/fundamental-courses/overview' 69 | - label: 'C Programming' 70 | link: '/fundamental-courses/c-programming' 71 | - label: 'Java' 72 | link: '/fundamental-courses/java' 73 | - label: 'Python' 74 | link: '/fundamental-courses/python' 75 | - label: 'Javascript' 76 | link: '/fundamental-courses/javascript' 77 | - label: 'SL3 Program' 78 | items: 79 | - label: 'What is SL3 Program' 80 | link: '/program/what-is-sl3-program' 81 | - label: 'Java' 82 | link: '/program/java' 83 | - label: 'Python' 84 | link: '/program/python' 85 | - label: 'Javascript' 86 | link: '/program/javascript' 87 | - label: 'SL3 Framework' 88 | items: 89 | - label: 'Contributors' 90 | link: '/framework/contributors' 91 | - label: 'Supporters' 92 | link: '/framework/supporters' 93 | - label: 'Sponsors' 94 | link: '/framework/sponsors' 95 | - label: 'SL3 Applications' 96 | items: 97 | - label: 'Learn More' 98 | link: '/applications/learn-more' 99 | - label: 'Android' 100 | link: '/applications/android' 101 | - label: 'iOS' 102 | link: '/applications/ios' 103 | 104 | - label: 'Stack Learner' 105 | items: 106 | - label: 'Free Courses' 107 | link: 'https://youtube.com/stacklearner' 108 | - label: 'Premium Courses' 109 | link: 'https://courses.stackschool.co' 110 | - label: 'Free Consultancy' 111 | link: 'https://courses.stackschool.co/pages/consultancy' 112 | - label: 'Stack Journal' 113 | link: 'https://journal.stacklearner.com' 114 | - label: 'Official Page' 115 | link: 'https://facebook.com/stacklearner' 116 | - label: 'Programming Group' 117 | link: 'https://facebook.com/groups/stacklearner' 118 | - label: 'Linkedin Page' 119 | link: 'https://www.linkedin.com/company/stacklearner' 120 | - label: 'Official Instagram' 121 | link: 'https://instagram.com/stacklearner' 122 | - label: 'Medium Publication' 123 | link: 'https://medium.com/stack-learner' 124 | -------------------------------------------------------------------------------- /src/docs/applications/android.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Android Application' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/applications/ios.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'iOS Application' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/applications/learn-more.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Learn More About Our Applications' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/framework/contributors.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'SL3 Framework Contributors' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/framework/sponsors.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'SL3 Framework Sponsors' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/framework/supporters.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'SL3 Framework Supporters' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/fundamental-courses/c-programming.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Programming Fundamental Course - C Programming 3 | --- 4 | 5 | ![SL3 - Programming Fundamenta Course C](/courses-c.jpg) 6 | 7 | সি প্রোগ্রামিং ফান্ডামেন্টাল বিষয়বস্তুর ওপরে বেস্ট বাংলা কোর্স যা আমরা তৈরি করেছি SL3 Framework এর কথা মাথায় রেখে। এই কোর্সের মাধ্যমে প্রতিটা ফান্ডামেন্টাল বিষয়বস্তু ভিজুয়াল ভাবে আপনাদের সামনে রিপ্রেসেন্ট করা হয়েছে। যেন আমরা সহজেই সব গুলো কনসেপ্ট সম্পর্কে অবগত হতে পারেন। এই কোর্সের আর একটা বেস্ট পার্ট হচ্ছে প্রব্লেম সল্ভিং। আমরা নিজেরা আপনাদের জন্য প্রতিটা সেকশনের পরেই ৪-৫ টা করে প্রব্লেম দিয়ে রেখেছি যেন আপনারা সেটা সল্ভ করতে পারেন। এর সাথে সাথে অনলাইন জাজে কিভাবে প্রব্লেম সল্ভ করবেন সেই বিষয়েই বিস্তর আলোচনা করা হয়েছে। আর সব শেষে থাকছে প্রব্লেম প্যাক। যেখানে আমরা অনেক গুলো সমস্যার একটা লিস্ট আপনাকে দিবো আর আপনার কাজ হবে সব গুলো সমস্যা সমাধান করে আমাদের কাছে জমা দেওয়া। তারপরে আমরা আপনাদের সমাধান গুলো পরীক্ষা করে দেখবো। এই কোর্স শেষে আপনারা কি করবেন, কিভাবে আগাবেন তারও একটা গাইডলাইন দেওয়া হয়েছে। 8 | 9 | **নোটঃ এটা একটা অনলাইন প্রিরেকর্ডেড কোর্স** 10 | 11 |
12 | 13 | ## এই কোর্স গুলো ভিতরে থাকবে - 14 | 15 | - Recorded Class 16 | - Language Specific Fundamental Concepts 17 | - Slides & Examples 18 | - Problem Solving 19 | - Online Judge Fundamentals 20 | - Custom Problem Packs 21 | - Online Support & Secret Group 22 | 23 |
24 | 25 | ## কোর্স কারিকুলাম 26 | 27 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 28 | 29 |
30 | 31 | **যদি আপনি নিজে নিজে শিখতে পছন্দ করেন এবং SL3 এর মতো করে নিজের বেস তৈরি করতে চান তাহলে কোর্স গুলো আপনার জন্য অনেক হেল্পফুল হবে। প্রতিটা সিঙ্গেল কোর্সের মূল্য আমরা নির্ধারণ করেছি ২০৯৯ টাকা। কোর্স গুলো এখনো পাবলিশ করা হয় নি। ১০০ প্রিঅর্ডার পাওয়ার পরেই আমরা কোর্স গুলো পাবলিশ শুরু করবো। যারা যারা প্রিঅর্ডার করবেন তাদের সম্মানার্থে আমরা কোর্সের মূল্য রেখেছি ৯৯৯ টাকা। এই অফার শুধুমাত্র প্রথম ১০০ জনের জন্যই প্রযোজ্য। এখানে কোর্সের মূল্যকে আমরা প্রাধান্য দেই নি। কারণ কোর্স কোয়ালিটি এবং আউটকাম যদি আমরা মাথায় রাখতাম তাহলে প্রতিটা ফান্ডামেন্টাল কোর্সের মূল্য দাঁড়াতো ১০ হাজার টাকার বেশি। আমরা চাচ্ছি আপনারা ভালো করে প্রোগ্রামিংটা শিখুন, তারপরে আপনার ক্যারিয়ার আপনারা নিজেরাই গড়ে নিতে পারবেন। প্রিঅর্ডার করতে যোগাযোগ করুন [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্ট মেইলে support@stacklearner.com** 32 | -------------------------------------------------------------------------------- /src/docs/fundamental-courses/java.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Programming Fundamental Course - Java 3 | --- 4 | 5 | ![SL3 - Programming Fundamenta Course Java](/courses-java.jpg) 6 | 7 | জাভা ফান্ডামেন্টাল বিষয়বস্তুর ওপরে বেস্ট বাংলা কোর্স যা আমরা তৈরি করেছি SL3 Framework এর কথা মাথায় রেখে। এই কোর্সের মাধ্যমে প্রতিটা ফান্ডামেন্টাল বিষয়বস্তু ভিজুয়াল ভাবে আপনাদের সামনে রিপ্রেসেন্ট করা হয়েছে। যেন আমরা সহজেই সব গুলো কনসেপ্ট সম্পর্কে অবগত হতে পারেন। এই কোর্সের আর একটা বেস্ট পার্ট হচ্ছে প্রব্লেম সল্ভিং। আমরা নিজেরা আপনাদের জন্য প্রতিটা সেকশনের পরেই ৪-৫ টা করে প্রব্লেম দিয়ে রেখেছি যেন আপনারা সেটা সল্ভ করতে পারেন। এর সাথে সাথে অনলাইন জাজে কিভাবে প্রব্লেম সল্ভ করবেন সেই বিষয়েই বিস্তর আলোচনা করা হয়েছে। আর সব শেষে থাকছে প্রব্লেম প্যাক। যেখানে আমরা অনেক গুলো সমস্যার একটা লিস্ট আপনাকে দিবো আর আপনার কাজ হবে সব গুলো সমস্যা সমাধান করে আমাদের কাছে জমা দেওয়া। তারপরে আমরা আপনাদের সমাধান গুলো পরীক্ষা করে দেখবো। এই কোর্স শেষে আপনারা কি করবেন, কিভাবে আগাবেন তারও একটা গাইডলাইন দেওয়া হয়েছে। 8 | 9 | **নোটঃ এটা একটা অনলাইন প্রিরেকর্ডেড কোর্স** 10 | 11 |
12 | 13 | ## এই কোর্স গুলো ভিতরে থাকবে - 14 | 15 | - Recorded Class 16 | - Language Specific Fundamental Concepts 17 | - Slides & Examples 18 | - Problem Solving 19 | - Online Judge Fundamentals 20 | - Custom Problem Packs 21 | - Online Support & Secret Group 22 | 23 |
24 | 25 | ## কোর্স কারিকুলাম 26 | 27 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 28 | 29 |
30 | 31 | **যদি আপনি নিজে নিজে শিখতে পছন্দ করেন এবং SL3 এর মতো করে নিজের বেস তৈরি করতে চান তাহলে কোর্স গুলো আপনার জন্য অনেক হেল্পফুল হবে। প্রতিটা সিঙ্গেল কোর্সের মূল্য আমরা নির্ধারণ করেছি ২০৯৯ টাকা। কোর্স গুলো এখনো পাবলিশ করা হয় নি। ১০০ প্রিঅর্ডার পাওয়ার পরেই আমরা কোর্স গুলো পাবলিশ শুরু করবো। যারা যারা প্রিঅর্ডার করবেন তাদের সম্মানার্থে আমরা কোর্সের মূল্য রেখেছি ৯৯৯ টাকা। এই অফার শুধুমাত্র প্রথম ১০০ জনের জন্যই প্রযোজ্য। এখানে কোর্সের মূল্যকে আমরা প্রাধান্য দেই নি। কারণ কোর্স কোয়ালিটি এবং আউটকাম যদি আমরা মাথায় রাখতাম তাহলে প্রতিটা ফান্ডামেন্টাল কোর্সের মূল্য দাঁড়াতো ১০ হাজার টাকার বেশি। আমরা চাচ্ছি আপনারা ভালো করে প্রোগ্রামিংটা শিখুন, তারপরে আপনার ক্যারিয়ার আপনারা নিজেরাই গড়ে নিতে পারবেন। প্রিঅর্ডার করতে যোগাযোগ করুন [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্ট মেইলে support@stacklearner.com** 32 | -------------------------------------------------------------------------------- /src/docs/fundamental-courses/javascript.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Programming Fundamental Course - Javascript 3 | --- 4 | 5 | ![SL3 - Programming Fundamenta Course Javascript](/courses-js.jpg) 6 | 7 | জাভাস্ক্রিপ্ট ফান্ডামেন্টাল বিষয়বস্তুর ওপরে বেস্ট বাংলা কোর্স যা আমরা তৈরি করেছি SL3 Framework এর কথা মাথায় রেখে। এই কোর্সের মাধ্যমে প্রতিটা ফান্ডামেন্টাল বিষয়বস্তু ভিজুয়াল ভাবে আপনাদের সামনে রিপ্রেসেন্ট করা হয়েছে। যেন আমরা সহজেই সব গুলো কনসেপ্ট সম্পর্কে অবগত হতে পারেন। এই কোর্সের আর একটা বেস্ট পার্ট হচ্ছে প্রব্লেম সল্ভিং। আমরা নিজেরা আপনাদের জন্য প্রতিটা সেকশনের পরেই ৪-৫ টা করে প্রব্লেম দিয়ে রেখেছি যেন আপনারা সেটা সল্ভ করতে পারেন। এর সাথে সাথে অনলাইন জাজে কিভাবে প্রব্লেম সল্ভ করবেন সেই বিষয়েই বিস্তর আলোচনা করা হয়েছে। আর সব শেষে থাকছে প্রব্লেম প্যাক। যেখানে আমরা অনেক গুলো সমস্যার একটা লিস্ট আপনাকে দিবো আর আপনার কাজ হবে সব গুলো সমস্যা সমাধান করে আমাদের কাছে জমা দেওয়া। তারপরে আমরা আপনাদের সমাধান গুলো পরীক্ষা করে দেখবো। এই কোর্স শেষে আপনারা কি করবেন, কিভাবে আগাবেন তারও একটা গাইডলাইন দেওয়া হয়েছে। 8 | 9 | **নোটঃ এটা একটা অনলাইন প্রিরেকর্ডেড কোর্স** 10 | 11 |
12 | 13 | ## এই কোর্স গুলো ভিতরে থাকবে - 14 | 15 | - Recorded Class 16 | - Language Specific Fundamental Concepts 17 | - Slides & Examples 18 | - Problem Solving 19 | - Online Judge Fundamentals 20 | - Custom Problem Packs 21 | - Online Support & Secret Group 22 | 23 |
24 | 25 | ## কোর্স কারিকুলাম 26 | 27 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 28 | 29 |
30 | 31 | **যদি আপনি নিজে নিজে শিখতে পছন্দ করেন এবং SL3 এর মতো করে নিজের বেস তৈরি করতে চান তাহলে কোর্স গুলো আপনার জন্য অনেক হেল্পফুল হবে। প্রতিটা সিঙ্গেল কোর্সের মূল্য আমরা নির্ধারণ করেছি ২০৯৯ টাকা। কোর্স গুলো এখনো পাবলিশ করা হয় নি। ১০০ প্রিঅর্ডার পাওয়ার পরেই আমরা কোর্স গুলো পাবলিশ শুরু করবো। যারা যারা প্রিঅর্ডার করবেন তাদের সম্মানার্থে আমরা কোর্সের মূল্য রেখেছি ৯৯৯ টাকা। এই অফার শুধুমাত্র প্রথম ১০০ জনের জন্যই প্রযোজ্য। এখানে কোর্সের মূল্যকে আমরা প্রাধান্য দেই নি। কারণ কোর্স কোয়ালিটি এবং আউটকাম যদি আমরা মাথায় রাখতাম তাহলে প্রতিটা ফান্ডামেন্টাল কোর্সের মূল্য দাঁড়াতো ১০ হাজার টাকার বেশি। আমরা চাচ্ছি আপনারা ভালো করে প্রোগ্রামিংটা শিখুন, তারপরে আপনার ক্যারিয়ার আপনারা নিজেরাই গড়ে নিতে পারবেন। প্রিঅর্ডার করতে যোগাযোগ করুন [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্ট মেইলে support@stacklearner.com** 32 | -------------------------------------------------------------------------------- /src/docs/fundamental-courses/overview.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Programming Fundamental Courses' 3 | --- 4 | 5 | > প্রোগ্রামিং এর ফান্ডামেন্টাল বিষয় গুলো আপনি যে কোনো জায়গা থেকেই শিখতে পারেন। তবে SL3 Framework মেনে যদি আপনি শিখতে চান তাহলে আমাদের ফান্ডামেন্টাল বিষয়ের ওপরে প্রিমিয়াম কোর্স গুলো দেখতে পারেন। 6 | 7 | প্রোগ্রামিং এর ফান্ডামেন্টাল বিষয়গুলো খুবই গুরুত্বপূর্ণ। কারণ এর ওপরে নির্ভর করবে আপনার পরবর্তী প্রোগ্রামিং ক্যারিয়ার। তাই আপনাদের বোঝার জন্য সর্বোত্তম ভাবে আমরা এই কোর্স গুলোর প্লান করেছি যেন আপনারা ফান্ডামেন্টাল বিষয় গুলো বোঝার সাথে সাথে অসংখ্য সমস্যা সমাধান করার মাধ্যমে নিজের ভিত্তি গড়ে তুলতে পারেন খুব সহজেই। আমরা আপাতত চারটি প্রোগ্রামিং ল্যাংগুয়েজের ওপরে ফান্ডামেন্টাল কোর্সের প্লান করেছি। 8 | 9 | - [C Programming](/fundamental-courses/c-programming) 10 | - [Java](/fundamental-courses/java) 11 | - [Python](/fundamental-courses/python) 12 | - [Javascript](/fundamental-courses/javascript) 13 | 14 |
15 | 16 | ## এই কোর্স গুলো ভিতরে থাকবে - 17 | 18 | - Recorded Class 19 | - Language Specific Fundamental Concepts 20 | - Slides & Examples 21 | - Problem Solving 22 | - Online Judge Fundamentals 23 | - Custom Problem Packs 24 | - Online Support & Secret Group 25 | 26 |
27 | 28 | **যদি আপনি নিজে নিজে শিখতে পছন্দ করেন এবং SL3 এর মতো করে নিজের বেস তৈরি করতে চান তাহলে কোর্স গুলো আপনার জন্য অনেক হেল্পফুল হবে। প্রতিটা সিঙ্গেল কোর্সের মূল্য আমরা নির্ধারণ করেছি ২০৯৯ টাকা। কোর্স গুলো এখনো পাবলিশ করা হয় নি। ১০০ প্রিঅর্ডার পাওয়ার পরেই আমরা কোর্স গুলো পাবলিশ শুরু করবো। যারা যারা প্রিঅর্ডার করবেন তাদের সম্মানার্থে আমরা কোর্সের মূল্য রেখেছি ৯৯৯ টাকা। এই অফার শুধুমাত্র প্রথম ১০০ জনের জন্যই প্রযোজ্য। এখানে কোর্সের মূল্যকে আমরা প্রাধান্য দেই নি। কারণ কোর্স কোয়ালিটি এবং আউটকাম যদি আমরা মাথায় রাখতাম তাহলে প্রতিটা ফান্ডামেন্টাল কোর্সের মূল্য দাঁড়াতো ১০ হাজার টাকার বেশি। আমরা চাচ্ছি আপনারা ভালো করে প্রোগ্রামিংটা শিখুন, তারপরে আপনার ক্যারিয়ার আপনারা নিজেরাই গড়ে নিতে পারবেন। প্রিঅর্ডার করতে যোগাযোগ করুন [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্ট মেইলে support@stacklearner.com** 29 | 30 | > প্রতিটা কোর্সের বিস্তারিত জানতে ওপরে দেওয়া ল্যাংগুয়েজের লিস্ট গুলোতে ক্লিক করুন অথবা নেভিগেশন থেকে আপনার পছন্দের ল্যাংগুয়েজ সিলেক্ট করুন। 31 | -------------------------------------------------------------------------------- /src/docs/fundamental-courses/python.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: Programming Fundamental Course - Python 3 | --- 4 | 5 | ![SL3 - Programming Fundamenta Course Python](/courses-python.jpg) 6 | 7 | পাইথন ফান্ডামেন্টাল বিষয়বস্তুর ওপরে বেস্ট বাংলা কোর্স যা আমরা তৈরি করেছি SL3 Framework এর কথা মাথায় রেখে। এই কোর্সের মাধ্যমে প্রতিটা ফান্ডামেন্টাল বিষয়বস্তু ভিজুয়াল ভাবে আপনাদের সামনে রিপ্রেসেন্ট করা হয়েছে। যেন আমরা সহজেই সব গুলো কনসেপ্ট সম্পর্কে অবগত হতে পারেন। এই কোর্সের আর একটা বেস্ট পার্ট হচ্ছে প্রব্লেম সল্ভিং। আমরা নিজেরা আপনাদের জন্য প্রতিটা সেকশনের পরেই ৪-৫ টা করে প্রব্লেম দিয়ে রেখেছি যেন আপনারা সেটা সল্ভ করতে পারেন। এর সাথে সাথে অনলাইন জাজে কিভাবে প্রব্লেম সল্ভ করবেন সেই বিষয়েই বিস্তর আলোচনা করা হয়েছে। আর সব শেষে থাকছে প্রব্লেম প্যাক। যেখানে আমরা অনেক গুলো সমস্যার একটা লিস্ট আপনাকে দিবো আর আপনার কাজ হবে সব গুলো সমস্যা সমাধান করে আমাদের কাছে জমা দেওয়া। তারপরে আমরা আপনাদের সমাধান গুলো পরীক্ষা করে দেখবো। এই কোর্স শেষে আপনারা কি করবেন, কিভাবে আগাবেন তারও একটা গাইডলাইন দেওয়া হয়েছে। 8 | 9 | **নোটঃ এটা একটা অনলাইন প্রিরেকর্ডেড কোর্স** 10 | 11 |
12 | 13 | ## এই কোর্স গুলো ভিতরে থাকবে - 14 | 15 | - Recorded Class 16 | - Language Specific Fundamental Concepts 17 | - Slides & Examples 18 | - Problem Solving 19 | - Online Judge Fundamentals 20 | - Custom Problem Packs 21 | - Online Support & Secret Group 22 | 23 |
24 | 25 | ## কোর্স কারিকুলাম 26 | 27 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 28 | 29 |
30 | 31 | **যদি আপনি নিজে নিজে শিখতে পছন্দ করেন এবং SL3 এর মতো করে নিজের বেস তৈরি করতে চান তাহলে কোর্স গুলো আপনার জন্য অনেক হেল্পফুল হবে। প্রতিটা সিঙ্গেল কোর্সের মূল্য আমরা নির্ধারণ করেছি ২০৯৯ টাকা। কোর্স গুলো এখনো পাবলিশ করা হয় নি। ১০০ প্রিঅর্ডার পাওয়ার পরেই আমরা কোর্স গুলো পাবলিশ শুরু করবো। যারা যারা প্রিঅর্ডার করবেন তাদের সম্মানার্থে আমরা কোর্সের মূল্য রেখেছি ৯৯৯ টাকা। এই অফার শুধুমাত্র প্রথম ১০০ জনের জন্যই প্রযোজ্য। এখানে কোর্সের মূল্যকে আমরা প্রাধান্য দেই নি। কারণ কোর্স কোয়ালিটি এবং আউটকাম যদি আমরা মাথায় রাখতাম তাহলে প্রতিটা ফান্ডামেন্টাল কোর্সের মূল্য দাঁড়াতো ১০ হাজার টাকার বেশি। আমরা চাচ্ছি আপনারা ভালো করে প্রোগ্রামিংটা শিখুন, তারপরে আপনার ক্যারিয়ার আপনারা নিজেরাই গড়ে নিতে পারবেন। প্রিঅর্ডার করতে যোগাযোগ করুন [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্ট মেইলে support@stacklearner.com** 32 | -------------------------------------------------------------------------------- /src/docs/kickstart.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Kickstart with SL3 Framework' 3 | metaTitle: 'Getting Started with SL3 Framework' 4 | --- 5 | 6 | ## Stack Learner Language Learning Framework 7 | 8 | নামের মধ্যেই আমরা বলছি ল্যাংগুয়েজ লার্নিং, কিন্তু এটা নির্দিষ্ট কোনো ল্যাঙ্গুয়েজকে বোঝাচ্ছে না। এই ফ্রেমওয়ার্কের মাধ্যমে আমরা আপনার প্রোগ্রামিং ল্যাংগুয়েজের প্রতি ভয়টা দূর করার চেষ্টা করেছি। বিভিন্ন মজার মজার উদাহরণ দেওয়ার মাধ্যমে প্রোগ্রামিং এবং বাস্তব জীবনের মধ্যে একটা মিল বন্ধন তৈরি করার চেষ্টা করেছি। তবে আমাদের আল্টিমেট উদ্দ্যেশ্য হচ্ছে আপনার কাছে প্রোগ্রামিং কে বোধগম্য করে তোলা, প্রোগ্রামিং ল্যাংগুয়েজ ভীতি দূর করা এবং প্রব্লেম সল্ভিং স্কিল তৈরি করা। 9 | 10 | এই ফ্রেমওয়ার্ককে লারাভেল বা জ্যাংগো ফ্রেমওয়ার্কের মতো মনে করার দরকার নেই। এটা ওয়েব ডেভেলপমেন্টের কোনো ফ্রেমওয়ার্ক না, এটা মাইন্ডসেট তৈরি করার একটা ফ্রেমওয়ার্ক। এই ফ্রেমওয়ার্ক যদি আপনি ফলো করেন, এটা আস্তে আস্তে আপনার ভিতর থেকেই আপনাকে পরিবর্তন করে ফেলবে। আর পরিবর্তনটা যে সে পরিবর্তন না, ম্যাসিভ পরিবর্তন। আপনি বাস্তব জীবনে সব জায়গাতেই প্রোগ্রামিং খুঁজে পাবেন। আর সেটা যদি হয় তাহলে একই সাথে দুইজন স্বার্থক হবে। প্রথমত আপনি, কারণ প্রোগ্রামার হওয়ার প্রথম এবং সব থেকে কঠিন ধাপ আপনি পার করে ফেলেছেন। আর দ্বিতীয়ত আমরা, কারণ SL3 Framework এসেছেই আপনাকে প্রোগ্রামার বানানোর জন্য। 11 | 12 |
13 | এই ডকুমেন্টেশনটা ভালো ভাবে বোঝার জন্য নিচের ধাপ গুলো ফলো করুন - 14 | 15 | ## The Purpose of Computer: 16 | 17 | সবার প্রথমে আমাদের কম্পিউটারের প্রয়োজনীয়তা আমাদের জানতে এবং বুঝতে হবে। একজন প্রোগ্রামারের কাজ হচ্ছে কম্পিউটারকে নির্দেশ দিয়ে নির্দিষ্ট কিছু কাজ করিয়ে নেওয়া। তো আমি যদি না জানি যে কম্পিউটার আমার জন্য কি করতে পারবে আর কি করতে পারবে না তাহলে তো সমস্যা। তাই সবার প্রথমে আমাদের কম্পিউটারের প্রয়োজনীয়তা এবং কাজ বুঝতে হবে। 18 | 19 | ## The Purpose of Programming Language: 20 | 21 | যদি কোনো প্রোগ্রামারকে জিজ্ঞাসা করা হয় যে প্রোগ্রামিং ল্যাংগুয়েজ কি তাহলে তার সোজা সাপটা উত্তর থাকে এটা কম্পিউটারের ভাষা। আর একজন সাধারণ মানুষ সেটা মেনে নিতেই বাধ্য। কিন্তু প্রোগ্রামিং ল্যাংগুয়েজ কি সেটা সম্পর্কে যদি আমাদের একটা পরিষ্কার ধারণা থাকে তাহলে প্রোগ্রামার হওয়ার যাত্রাটা আরও অনেক বেশি সহজ হয়ে যায়। 22 | 23 | ## Why Do We Learn Programming: 24 | 25 | কম্পিউটার, কম্পিউটারের ভাষা সম্পর্কে তো আমরা জানিই। কিন্তু কখনো কি ভেবে দেখেছি যে আমরা কেন প্রোগ্রামার হব? আমাদের ফায়দাটা কি? প্রোগ্রামার হিসেবে আমাদের জন্য কি কি অপেক্ষা করছে? প্রোগ্রামার হওয়ার পূর্বেই আমি মনে করি এই প্রশ্ন গুলোর উত্তর আমাদের কাছে থাকা দরকার। 26 | 27 | ## The Pseudo Code: 28 | 29 | পৃথিবীতে এত এত প্রোগ্রামিং ল্যাংগুয়েজ। কিন্তু একজন বিগিনারের পক্ষে তো এত প্রোগ্রামিং ল্যাংগুয়েজ শেখা সম্ভব না তাই না? এত প্রোগ্রামিং ল্যাংগুয়েজ থাকলেও সমস্যা গুলো কিন্তু ল্যাংগুয়েজ নির্ভর না। আপনি যে কোনো প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করেই যে কোনো সমস্যার সমাধান করতে পারেন, কাজটা এফিশিয়েন্ট হোক আর না হোক। সমস্যা যেহেতু কোনো ল্যাংগুয়েজ নির্ভর না, এর সমাধানও তাই কোনো ল্যাংগুয়েজ নির্ভর হতে পারে না। আর কোনো প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার না করে একটা সমস্যার সমাধান আমরা লিখতে পারি সুডোকোড ব্যবহার করে। 30 | 31 | ## Programming Fundamentals: 32 | 33 | প্রোগ্রামিং একটা বৃহৎ জার্নি, এখানে অনেক কিছু শেখার আছে, শেখার কোনো শেষ নেই। এই কথা গুলোতো আমরা সবাই শুনেছি এবং শুনছি। কিন্তু তারপরেও সবারই মনের মধ্যে একটা প্রশ্ন ঘুরপাক খায় যে আর কতটুকু শিখলে আমি মোটামোটি কাজ করতে পারবো। আমরা মনে করি প্রোগ্রামিং এর কিছু ফান্ডামেন্টাল বিষয় আছে। শুধুমাত্র সেই গুলো জানলেই দুনিয়ার সমস্ত সমস্যার সমাধান করা সম্ভব। সবার প্রথমে আমাদের উচিৎ সেই বিষয় গুলো সম্পর্কে জ্ঞান অর্জন করা। 34 | 35 | ## Problem Solving: 36 | 37 | প্রোগ্রামিং শেখার মূল উদ্দেশ্য হচ্ছে বাস্তব সমস্যার সমাধান করা। আর বাস্তব সমস্যার সমাধান করার জন্য দরকার প্রোগ্রামিং, ম্যাথ, লজিক আরও অনেক কিছু। আপনাকে একজন ভালো প্রব্লেম সল্ভার হিসেবে গড়ে তোলার সমস্ত উপকরণই আমরা রেখেছি এই সেকশনে। 38 | 39 | ## Examples: 40 | 41 | এখানে আমরা আমাদের মতো করে কিছু সমস্যা ও তার সমাধান করে দেখাবো। আরও কিছু সমস্যা আপনাদের জন্য দিয়ে দেব যেন আপনারা নিজেদের মতো করে SL3 Framework মেনে সেগুলো সমাধান করতে পারেন। আপনি যত বেশি সমস্যা সমাধান করবেন তত বেশি লজিক বিউল্ড হবে। আর যদি সঠিক ভাবে সমস্যা গুলো সমাধান করতে পারেন তাহলে সমস্যা দেখার ওয়েটাই আপনার পরিবর্তন হয়ে যাবে। 42 | 43 | ## Learning Process: 44 | 45 | কি কি শিখতে হবে সেটা অনেকে বললেও কিভাবে শিখতে হবে সেটা অনেকেই এডিয়ে যায়। প্রত্যেকের শেখার প্রোসেসটা যদিও ভিন্ন তারপরেও কিছু কিছু প্রোসেস আছে যা সবার জন্যই এক। আমরা আমাদের মত করে কিছু লার্নিং প্রোসেস আপনাদেরকে দেওয়ার চেষ্টা করেছি যা সবার জন্যই সমান ভাবে কার্যকরি হবে বলেই আমাদের বিশ্বাস। 46 | 47 | ## What Next: 48 | 49 | প্রোগ্রামিং শিখলাম, প্রব্লেম সল্ভিং শিখলাম। এর পরে কি? এর পরে কি করবেন তার গাইডলাইন আমরা আপনাকে এখানেই প্রোভাইড করবো। 50 | 51 |
52 | অনুগ্রহ করে প্রতিটা আর্টিকেল খুব মনোযোগ সহকারে পড়বেন। এই আর্টিকেল বা ভিডিও গুলো আপনার 53 | অজান্তেই আপনার মাইন্ডসেট পুরোপুরি পরিবর্তন করে ফেলবে। এখানে শুধু প্রোগ্রামিং না, 54 | প্রোগ্রামিং এর বাইরেও অনেক কিছুই প্রোভাইড করা হবে। 55 | -------------------------------------------------------------------------------- /src/docs/learning-techniques/contribute-knowledge.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Contribute & Share Knowledge' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/learning-techniques/learning-methods.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Learning Methods & Techniques' 3 | --- 4 | 5 | শেখার প্রসেসটা প্রতিটা মানুষের জন্য ভিন্ন, সবাই এক ভাবে শিখতে পছন্দ করে না। আবার একভাবে চেষ্টা করলেও সবার ক্ষেত্রে একই ফলাফল কখনোই আশা করা যায় না। তবে প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ শেখার ক্ষেত্রে আমরা নিজেরা কিছু টেকনিক ফলো করি। এই টেকনিকগুলো ফলো করে আমরা খুব ভালো ফলাফল পেয়েছি। এই ডকুমেন্টের মাধ্যমে আমরা আপনাদেরকে খুবই সাধারণ লার্নিং মেথডস গুলো সম্পর্ক অবগত করবো। 6 | 7 |
8 | 9 | ## Type of Learning Methods 10 | 11 | আমরা লার্নিং মেথডস গুলোকে দুইভাগে ভাগ করেছি। কিছু কিছু শেখার মেথড আছে যেগুলো ইন্সট্যান্টলি খুব ভালো সাপোর্ট দেয়, মনে হয় সব কিছু শিখে ফেলেছি। কিন্তু লং টাইমে গিয়ে দেখা যায় যে কিছুই শিখি নি। আবার কিছু কিছু মেথড আছে যেগুলো ইন্সট্যান্টলি কোনো ফলাফল দেয় না, আবার দিলেও আমাদের মন ভরে না। কিন্তু লং রানে এই মেথড গুলোই টিকে থাকে। আমরা প্রথম মেথডের নাম দিয়েছি Less Effective Instant Solution এবং দ্বিতীয় মেথডের নাম দিয়েছি Most Effective Painful Solution। তবে এমনটা না যে, কোনো একটা মেথড বেছে নিলেই কাজ শেষ। আপনাকে কম্পোসিশন করা শিখতে হবে। বিভিন্ন মেথড যোগ করে নিজের শেখার একটা ফ্লেভার তৈরি করতে হবে। কারণ আগেই আমরা বলেছি সবার শেখার পদ্ধতি এক নয়। 12 | 13 |
14 | 15 | ## Less Effective Instant Solution 16 | 17 | আমরা মানুষেরা খুব অলস প্রজাতির প্রাণী। আমরা সব সময় সব কিছু সহজ খুঁজি, শর্টকাট রাস্তা খোঁজার চেষ্টা করি। আপনাকে মনে রাখতে হবে শর্টকাটে আপনি ইনস্ট্যান্ট হয়তো ভালো কিছু করতে পারবেন, কিন্তু লং রানে আপনি হেরে যাবেন। সফলতার কোনো শর্টকাট নিয়ম নেই। 'Less Effective Instant Solution' এর মধ্যে আমরা যেই টেকনিক গুলোর কথা বলবো সব গুলোই আপনাকে সহজ সমাধান দিবে। আপনার মনেও হবে যে আপনি অনেক কিছু শিখে গিয়েছেন, তবে কিছুদূর যাওয়ার পরেই আবার হতাশার সম্মুখীন হবেন। আপনাদের ভিতরে এমন অনেক মানুষ আছেন যারা টিউটোরিয়াল দেখে শিখে মনে করেন যে আমি অনেক কিছু শিখে ফেলেছি। আবার আপনি কিছু দিন পরে নিজে কোনো একটা কাজ করতে গিয়ে হতাশ হয়ে পড়েন, আপনার নিজেরই মনে হয় আপনি কিছু শেখেন নি। এর কারণ আপনি Less Effective Instant Solution পদ্ধতিতে শেখার চেষ্টা করেছিলেন। একটা কথা খুব ভালো করে মাথায় রাখবেন, **আপনাকে শুরু করতে হবে Less Effective Instant Solution এর মেথড গুলো দিয়েই, তবে এখানেই থেমে যাওয়া যাবে না। এটা শেষ করে আপনাকে Most Effective Painful Solution এর মেথড গুলোও প্রাকটিস করতে হবে।** 18 | 19 | আমাদের মতে নিচের লার্নিং টেকনিক গুলো হচ্ছে Less Effective Instant Solution - 20 | 21 | - Youtube Tutorial 22 | - Random Article Search 23 | - Paid Video Course 24 | 25 | ওপরের তিনটা টেকনিকই আমাদের মতে সব থেকে বাজে টেকনিক যদি না আপনি পরবর্তী Most Effective Painful Solution এর টেকনিক গুলো ফলো করেন। কিন্তু আমাদের দেশের প্রেক্ষাপটে দেখা যায় সবাই শুধুমাত্র ভিডিও টিউটোরিয়াল দেখেই শিখতে থাকে। আর্টিকেল পড়া অনেক ভালো কাজ হলেও সেটার সঠিক ব্যবহার করে না। র‍্যান্ডম ভাবে যেখান সেখান থেকে একটা আর্টিকেল পড়েই মনে করে সব শিখে ফেলেছি। যারা একটু নিজেদের স্মার্ট মনে করে তারা বিভিন্ন টরেন্ট থেকে একটা বিষয়ের ওপরে দশ বারোটা পাইরেটেড কোর্স ডাউনলোড করে অথবা পার্সেস করে। (পাইরেটেড কোর্স ডাউনলোড করা সম্পূর্ণ ইলিগাল এবং ইসলামের ভাষায় এটা হারাম) সব গুলো কোর্স শুধুমাত্র পিসিতে ডাউনলোডই করা থাকে, প্রতিটা কোর্স থেকে অল্প অল্প করে শুধু স্বাদই নেওয়া হয় কিন্তু সম্পূর্ণ কোর্স আর করা হয় না। 26 | 27 | ভাইয়া একটা ইউটিউব টিটোরিয়াল, আর্টিকেল বা ভিডিও কোর্স যায় বলেন না কেন এখানে ক্রিয়েটর আগে থেকে প্লান করে রাখে এবং সেই অনুযায়ী আপনাদের সামনে রিপ্রেসেন্ট করে। আমরা যেহেতু নিজেরা প্রিমিয়াম কোর্স বানায় তাই আমরা বিষয় গুলো সম্পর্কে অনেক ভালো ভাবে অবগত। এখন আপনি যদি ইন্সট্রাক্টর যা দেখাচ্ছে, যে ভাবে দেখাচ্ছে সেভাবেই প্রাকটিস করতে থাকেন তাহলে আপনার কোডও সঠিক ভাবে কাজ করবে। তবে আপনি নিজে কিছুই শিখলেন না। হ্যাঁ যদি আপনি ইন্সট্রাক্টরের দেখানো কোড শেষ করে নিজের মতো করে আরও দুইটা একই টাইপের প্রোজেক্ট তৈরি করেন তাহলে আপনি আসলেই শিখছেন। এবং এই ক্ষেত্রে আপনি আর Less Effective Instant Solution এর মধ্যেও নেই। একটা টিউটোরিয়াল দেখে ইন্সট্যান্টলি আপনার মনে হওয়া স্বাভাবিক যে বিষয়টা কতো সহজ। বিষয়টা আসলেই কতোটা সহজ সেটা বোঝার জন্য আপনাকে কোড করতে হবে। ইন্সট্রাক্টর যা দেখিয়েছেন হুবহু সেই কোড না, এর মতো আরও কিছু সমস্যা খুঁজে বের করে সমাধান করতে হবে। 28 | 29 | ইউটিউব ভিডিও, টিউটোরিয়াল বা কোর্স ও Most Effective Painful Solution হতে পারে। তবে এই জন্য আপনাকে ব্যাপার গুলো বুঝতে হবে, নিজের মতো একটা শেখার টেকনিক তৈরি করতে হবে। 30 | 31 |
32 | 33 | ## Most Effective Painful Solution 34 | 35 | নামের ভিতরেই আমরা বলে দিচ্ছি যে আসলে এই সল্যুশন গুলো অনেক পেইনফুল, তবে ইফেক্টিভ। ইফেক্টিভ হলে কি হবে, পেইনফুল তো? তাই বেশির ভাগ মানুষ এই সমাধান গুলোকে এড়িয়ে চলে। তবে সত্যিকার অর্থেই যদি আপনার একজন ভালো প্রোগ্রামার হওয়ার ইচ্ছে থাকে তাহলে সহজ সমাধান আপনার জন্য না। আমরা নিচের টেকনিক গুলোকে বলছি Most Effective Painful Solution - 36 | 37 | - Book Reading 38 | - Documentation Reading 39 | - Research Paper Writing 40 | - Implement Project 41 | - Solve Others Problem 42 | - Teach Coding 43 | 44 |
45 | 46 | ## Book Reading 47 | 48 | প্রোগ্রামিং এর বই গুলো সাহিত্যের বই এর মতো রসাত্মক হয় না, হয় জ্ঞানে ভরা। এই জন্য সাধারণ ভাবেই মানুষ এই গুলো পছন্দ করতে পারে না। কিন্তু ভালো প্রোগ্রামার হওয়ার অন্যতম বৈশিষ্ট্য হচ্ছে বই পড়া। আপনি যত বেশি প্রোগ্রামিং এর বই পড়বেন ততো বেশি আপনার জ্ঞান বৃদ্ধি পাবে। আর জ্ঞান কিন্তু গাছের শাখা প্রশাখার মতো বৃদ্ধি পায়। প্রথমে যখন জন্মায় তখন একটা মাত্র কাণ্ড থাকে, যখন বড় হতে থাকে তখন চারপাশ দিয়ে কাণ্ড, শাখা প্রশাখা, পাতায় ভরপুর হয়ে যায়। কষ্টকর হলেও এখন থেকেই বই পড়ার প্রাকটিস গড়ে তুলুন। আমি ইংরেজি বুঝিনা, বই পড়লে সব মাথার ওপর দিয়ে যায় টাইপের অজুহাত দূরে রেখে এক পেজ ভালো করে বোঝার চেষ্টা করুন। এই এক পেজ ভালো করে বুঝতে পারলেই আপনার জীবন চেঞ্জ হয়ে যাবে। 49 | 50 |
51 | 52 | ## Documentation Reading 53 | 54 | আমাদের সব থেকে অ্যালার্জির জায়গা হচ্ছে ডকুমেন্টেশন। বই যাওবা আমরা দুই এক পেজ পড়ি, ডকুমেন্টেশনের নাম শুনলেই তো পিলে চমকে যায়। এই রকম বিদঘুটে জিনিস মানুষ পড়ে কেমনে? হ্যাঁ আমি মানছি, কিছু কিছু ডকুমেন্টেশন দেখলে রীতিমত শরীরের লোম দাঁড়িয়ে যায়। কিন্তু ডকুমেন্টেশন ছাড়া একটা টেকনোলজি, ল্যাংগুয়েজ বা ফ্রেমওয়ার্ক সম্পর্কে আপনি কিভাবে সম্পূর্ণ জানতে পারবেন? কারণ যারা এই টেকনোলজি টা বানিয়েছে তারাই টেকনোলজিতে কি কি আছে তা নিয়ে ডকুমেন্টেশন বানিয়েছে। তাই ডকুমেন্টেশন না পড়ে আমি কোনো দিনও বলতে পারি না যে এই টেকনোলজি সম্পর্কে আমি সব জানি। ডকুমেন্টেশন পড়াটা একটু কঠিন, তবে কতক্ষণ কঠিন? যতক্ষণ না আপনি শুরু করছেন ততক্ষণ কঠিন। একবার ডকুমেন্টেশন থেকে শিখতে পারলে আপনার আর কোনো টিউটোরিয়াল বা কোর্সের প্রয়োজন হবে না। 55 | 56 |
57 | 58 | ## Research Paper Writing 59 | 60 | আমরা খুব অলস জাতি, আমরা পড়তেই চাই না আবার লেখালেখি। মাঝে মাঝে মনে হয় আমার কোড যদি অন্য কেউ টাইপ করে দিতো তাহলে কত ভালো হতো! তবে যায় হোক, প্রোগ্রামিং কে ভালোবেসেই হোক আর নিজের মনের বিরুদ্ধ্যেই হোক বিয়ে যখন করবেন বলে সিদ্ধান্ত নিয়েছেন তখন আপনাকে টাইপ করতেই হবে। সেটা কোড হোক বা আর্টিকেল। লেখালেখি হচ্ছে শেখার অন্যতম একটা মাধ্যম। একটা নতুন বিষয় শেখার পরে সেটা নিয়ে একটা রিসার্স পেপার তৈরি করা যেতেই পারে। একটু সময় নিয়ে ভেবে চিন্তে এমন ভাবে সব কিছু লিখলেন যেন পরবর্তী আপনারও কাজে লাগে এবং অন্য যে কেউ এখান থেকে শিখতে পারে। যখন আপনি কোনো কিছু লিখে যাবেন, নতুন কিছু তো পরের কথা আপনি জানেন এমন কিছুও লিখতে যাবেন তখন দেখবেন আপনি কিছুই জানেন না। আপনি সব বুঝতে পারছেন কিন্তু কিভাবে লিখবেন সেটা বুঝতে পারছেন না। একটা সিম্পল আর্টিকেল লিখলেও সেখান থেকে কি পরিমাণ জ্ঞান যে আহরণ হয় তা বলে বোঝানো যাবে না। আপনারা নিজেরাই প্রাকটিস করে দেখেন। 61 | 62 |
63 | 64 | ## Implement Project 65 | 66 | নিজের জ্ঞানকে বাস্তবে রূপদান করতে সবারই ভালো লাগে। কিছু একটা যা দেখা যায় তা যদি আমরা তৈরি করতে পারি তাহলে আমাদের ইন্সপিরেশন অনেক বেড়ে যায়। তাই শেখার ক্ষেত্রে আমাদের উচিৎ কিছু প্রোজেক্ট তৈরি করা। এই প্রোজেক্ট গুলো ফেসবুকের মতো বড় সড় হওয়ার দরকার নেই। ছোট ছোট প্রচুর আইডিয়া আছে যা আমরা ইমপ্লিমেন্ট করতে পারি। তবে কোনো কোর্সের সাথে দেখানো প্রজেক্ট করবেন না। কোর্সে দেখানো প্রজেক্ট থেকে আইডিয়া নেন, কিন্তু নিজে কিছু একটা তৈরি করেন। এই প্রোজেক্ট গুলো যত ছোট হোক বা বড় আপনি নিজের জন্য তৈরি করবেন, কাউকে দেখানোর উদ্দেশ্যে নয়। তাই নিজেকে ধোঁকা না দিয়ে নিজের যোগ্যতায় নিজের জ্ঞান ইমপ্লিমেন্ট করবেন। 67 | 68 |
69 | 70 | ## Solve Others Problem 71 | 72 | অন্যের সমস্যার সমাধান দেওয়া শেখার অন্যতম একটা উপায়। আপনি বিভিন্ন ফোরাম বা ফেসবুক গ্রুপে জয়েন হতে পারেন। সেখানে আপনি আপনার মতো অনেক বিগিনার খুঁজে পাবেন। তারা তাদের সমস্যা নিয়ে বিভিন্ন প্রশ্ন করবে। আপনি তাদের প্রশ্ন গুলো দেখলে বুঝতে পারবেন তারা কি নিয়ে পড়াশোনা করছে। যদি আপনার মনে হয় আমি প্রশ্নের উত্তরটা জানি, তাহলে সুন্দর করে একটা উত্তর দেন। যদি মনে হয় যে আমি জানি না, তাহলে প্রশ্নটা ফলো করেন যে অন্যরা কি উত্তর দেয়। এইভাবে বিভিন্ন কমিউনিটির মাধ্যমে আপনার নিজেরও শেখা হলো, আবার যে জানেনা তারও শেখা হলো। এর সাথে সাথে আপনি যে একটা বিষয় জানেন সেটাও পাবলিসিটি হলো। আপনার যদি কোথাও ভুল থাকে তাহলে আর একজন সেটা শুধরায়েও দিতে পারে। 73 | 74 |
75 | 76 | ## Teach Coding 77 | 78 | কোনো কিছু শেখার সব থেকে ভালো উপায় হচ্ছে অন্যকে শেখানো। ওপরের সমস্ত মেথড ব্যবহার করে এটা জানা যাবে যে আপনি কিছু একটা শিখছেন। শুধুমাত্র আপনি যখন কাউকে কিছু একটা শেখাতে পারবেন তখন কনফার্ম হওয়া যাবে যে না আপনি আসলেই ব্যাপারটা শিখতে পেরেছেন। অন্যকে শেখানো খুবই গুরুত্বপূর্ণ একটা কাজ। আপনার থেকে কম জানে এই রকম দুই এক জন শেখানো শুরু করুন। তাদেরও উপকার হবে, কারণ তারা একটা রেফারেন্স পেলো। আবার আপনারও উপকার হবে, তাদেরকে শেখানোর জন্য যে কোনো বিষয় আপনার ভালো ভাবে শেখা হয়ে যাবে। 79 | 80 |

81 | 82 | Less Effective Instant Solution এবং Most Effective Painful Solution এর ভিতরে যেই মেথড গুলোর কথা বলা আছে আসলে ইন্টারনেট ঘাঁটলেও আপনারা এই কয়টা মেথডই পাবেন। এর বাইরে তেমন কিছু নেই যা করে ইফেক্টিভ ভাবে প্রোগ্রামিং শেখা যায়। তাই এখান থেকে আপনাকেই দুইটা বা তিনটা টেকনিক বেছে নিতে হবে এবং সেই অনুযায়ী পড়াশোনা করতে হবে। 83 | -------------------------------------------------------------------------------- /src/docs/learning-techniques/personal-blog.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Personal Blog & Article Writing' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/learning-techniques/social-learning.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Social Learning Process & Impact' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/motivation.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Motivation' 3 | metaTitle: 'Motivation of SL3 Framework' 4 | metaDescription: 'Why do we think we need a framework like SL3? What is the motivation behind SL3 Framework, SL3 APP and SL3 Program?' 5 | --- 6 | 7 | import Person from '../@rocketseat/gatsby-theme-docs/components/Person.jsx'; 8 | 9 | 17 | 18 | This video will be changed very soon 19 | 20 | ## The Reason We Introduce SL3 21 | 22 | ২০১৬ সাল থেকে বিভিন্ন ভাবে মানুষকে প্রোগ্রামিং শেখানোর কাজ করছি। শুরুটা শখের বসে নয়, কিছুটা বাধ্য হয়েই শুরু করা। যেহেতু স্কুল জীবন থেকেই কোনো এক কারণে আমার মাথায় প্রোগ্রামিং এর ভুত চেপেছিল তাই আমি ভার্সিটিতে ভর্তির আগেই প্রোগ্রামিং সম্পর্কে কিছু জ্ঞান রাখতাম। যেই জ্ঞানের সাথে আর অল্প কিছু জ্ঞান যুক্ত করলে অনায়াসেই ফ্রিলান্সিং করে ভালো একটা ক্যারিয়ারও দাঁড় করানো যেত। কিন্তু আমি ভর্তি হয়েছিলাম Software Engineering এ, ফ্রিলান্সিং ব্যাপারটা ঠিক পছন্দ করে উঠতে পারিনি। এর পিছনের একটা বড় কারণ হচ্ছে ফ্রিলান্সিং থেকেই ধাক্কা খেয়ে প্রোগ্রামিং এ আসা, আমি আসলে একটু ইঁচড়ে পাকা ছিলাম। 23 | 24 | ২০১৬ সালে আমার স্বপ্ন হচ্ছে হয় গুগলের মতো বড় কোম্পানিতে জব করবো আর না হয় নিজের কোম্পানি খুলে বসবো। ওই সময় আমার আবার Oracle খুব পছন্দের কোম্পানি, জাভাকে মন থেকে ভালোবাসতাম তো তাই। নিজের কোম্পানি খোলা তো এত সহজ কথা না, আমি কি এমন জানি যে কোম্পানি খুলতে পারবো? আর গুগল, মাইক্রোসফট আমাকে কেন নেবে? দুনিয়াতে মানুষের অভাব পড়েছে? তাহলে যেটাই করি প্রথমে দক্ষ হতে হবে। দক্ষতা অর্জন করার আমার কাছে বেস্ট উপায় ছিল ইমপ্লিমেন্ট করা। কিছু শিখবো, কিছু ইমপ্লিমেন্ট করবো। ইমপ্লিমেন্ট করতে গিয়ে আটকাবো, তারপরে আবার শিখবো। 25 | 26 | কিন্তু একা একা শেখা বা কাজ করা কিছুটা বিরক্তিকর। বহু বছর একা একা কাজ করেছি, শিখেছি। নতুন নতুন ভার্সিটিতে উঠেছি। আড্ডা, ঘুরে বেরানো, বন্ধুবান্ধবের প্রতি টান তো কাজ করবেই। এক দিকে বিরক্তি, অন্য দিকে বন্ধুবান্ধবের টান, কোনো ভাবেই তো সামনে আগানো যাচ্ছে না। কি করা যেতে পারে? বন্ধুবান্ধবদেরকেই প্রোগ্রামিং এর প্রতি ইন্টারেস্টেড করার চেষ্টা করি। তাহলে এক কাজে দুই কাজ হবে। আমার সাথে কাজ করার মানুষও পাবো আবার ওদেরকে শেখাতে গেলে নিজেরও শেখা অনেক ভালো হবে। ভার্সিটির দ্বিতীয় দিনই আমার শিক্ষক আমার ওপরে তার ক্লাস ছেড়ে দিয়েছিলেন প্রোগ্রামিং ফান্ডামেন্টালস এর একটা লেকচার দেওয়ার জন্য। এই একটা কারণেই আমার ভিতরে যে কিছু জ্ঞান আছে সেটা স্ট্যাবলিশ করতে নতুন করে কিছু করার প্রয়োজন হয় নি। 27 | 28 | ২০১৭ এর মাঝামাঝি সময় থেকে নন প্রফেশনাল ভাবে ওয়েব ডেভেলপমেন্ট শেখানো শুরু করি এবং ২০১৮ সালের শুরু থেকেই প্রফেশনাল ভাবে ডেভেলপমেন্টের টিউটোরিয়াল, লাইভ ক্লাস, সেমিনার সব কিছু শুরু করি। একটা দীর্ঘ সময় আমি মানুষকে ডেভেলপমেন্ট শেখাতে ব্যস্ত ছিলাম। প্রতিটা ব্যাচ থেকেই টার্গেট থাকতো কাকে আমি ফিউচারে আমার সাথে নিতে পারবো। কারণ টিচিং আমার পেশা না, বলতে পারেন এটা আমার নেশা। আমি টিচিং দেওয়া শুরু করেছিলাম আমার সাথে কাজ করতে পারবে এমন মানুষ তৈরি করার জন্য। কিন্তু পরে গিয়ে দেখতে পারলাম, আমাদের দেশে এটাই সব থেকে বড় গ্যাপ। কেউ একজন স্বপ্ন নিয়ে আসছে গুগলে চাকরি করবে, কিছু ব্যক্তি, গ্রুপ, প্রতিষ্ঠান হাসি তামাশা করে তার হাতে ওয়ার্ডপ্রেস ধরায়ে দিচ্ছে। ৪ বছর কম্পিউটার সাইন্সে পড়ে প্রোগ্রামিং এর কিছুই বুঝতে না পেরে দশ হাজার বিশ হাজার টাকা স্যালারিতে ডেটা এন্ট্রি এর কাজ করছে। কোনো কোনো প্রতিষ্টান বা ব্যক্তি ওয়ার্ডপ্রেস থিম কাস্টমাইজেশন বা ডেভেলপমেন্ট শিখিয়ে বলছে ওয়েব ডেভেলপমেন্ট শেখায়ে দিয়েছি, এখন আপনি হাজার হাজার ডলার কামাতে পারবেন। আবার কোনো কোনো প্রতিষ্ঠান ২-৪ মাসে ফুলস্ট্যাক ডেভেলপার বানাচ্ছে। কেউ সত্যিটা বলছে না। কারণ সত্যি বললে যে আর ব্যবসাটা করা হয় না। 29 | 30 | আজকে, যখন আমি এই লেখাটা লিখছি তখন আমার ইন্ডিরেক্ট স্টুডেন্টের সংখ্যা ২০ হাজার এর বেশি। আর সরাসরি কাজ করেছি ৫০০+ স্টুডেন্টের নিয়ে। যাদের ভিতরে একটাই কমন সমস্যা আমি লক্ষ্য করেছি। তারা সিনট্যাক্স লিখতে পারে, কেউ সমস্যার সমাধান করে দিলে সেটাও বুঝতে পারে কিন্তু নিজে কোনো সমস্যার সমাধান করতে পারে না। প্রোগ্রামিং ল্যাংগুয়েজের প্রতি তাদের অন্য রকম একটা ভয় কাজ করে। আসলে তাদের কোনো দোষ আমি দিবো না, কারণ সারা বিশ্বের কোনো ওয়েব সাইট, কোনো টিউটোরিয়াল আমাকে বলে দেই নি যে প্রোগ্রামিং শেখ, প্রোগ্রামিং ল্যাংগুয়েজ না। প্রোগ্রামিং শেখার কথা যখনই বলেছি হাতে ধরিয়ে দিয়েছে সি, সি++, জাভার মত ল্যাংগুয়েজ। কেউ বলেনি সুডোকোড লেখা শেখো, জাভা সি++ পরে এমনিই পারবা। কেউ বলেনি প্রব্লেম সল্ভিং করো সুডোকোড আর ম্যাথ ব্যবহার করে। 31 | 32 | প্রব্লেম সল্ভিং এর প্রতি ভার্সিটিতে জোর দেয়। কিন্তু আমার মতে ভুল ভাবে জোর দেয়। প্রোগ্রামিং ল্যাংগুয়েজ, ম্যাথ, প্রব্লেম সল্ভিং, অনলাইন জাজ সব মিলিয়ে মাথাটাকে গুলিয়ে খেয়ে ফেলে। প্রোগ্রামারস দের ফিল করায় তারা এই গ্রহের মানুষই না। অন্য গ্রহের মানুষের মতো চিন্তা ভাবনা করতে হবে। কিন্তু আসলে একজন প্রোগ্রামারকে সব থেকে সাধারণ ভাবে চিন্তা করতে হয়। কারণ বাস্তব জীবনের সমস্ত সমস্যা গুলোকে প্রোগ্রামাররাই তো সফটওয়্যারে রূপান্তর করে। 33 | 34 | যখন একজন স্টুডেন্ট ম্যাসেজ করে, ইমেইল করে বলে যে ভাইয়া আপনার টিটোরিয়াল থেকে তো সব ভালো মতোই বুঝতে পারছি কিন্তু নতুন সমস্যা আমি সমাধান করতে পারছি না। কি করলে লজিক বিউল্ড করতে পারি? কিভাবে প্রব্লেম সল্ভিং এর দক্ষতা বৃদ্ধি করতে পারি? আমার কাছে উত্তর নেই। 35 | 36 | এই উত্তর দেওয়ার উদ্দ্যেশ্যেই SL3 Framework (Stack Learner Language Learning Framework) এর আবির্ভাব। এখানে আমরা বলছি ল্যাংগুয়েজ লার্নিং ফ্রেমওয়ার্ক, কিন্তু এটা মূলত প্রোগ্রামিং ফ্রেমওয়ার্ক। যেখানে আমরা প্রোগ্রামিংটা শিখবো অ্যাবস্ট্রাক্ট ভাবে। এই ফ্রেমওয়ার্কের মূল উদ্দেশ্য হচ্ছে আপনার ভিতরে প্রোগ্রামিং মাইন্ডসেট তৈরি করা, প্রোগ্রামিং ল্যাংগুয়েজ ভীতি দূর করা, লজিক বিউল্ড করা এবং প্রব্লেম সল্ভিং। 37 | 38 | ব্যক্তি জীবনে আপনারা কে কোনো ক্যারিয়ার বেছে নিবেন তা আমি জানি না। তবে আইটি সেক্টরে যদি আপনি কাজ করতে চান তাহলে অবশ্যই আপনার প্রোগ্রামিং এর নূন্যতম জ্ঞান থাকা দরকার হবে। এই ফ্রেমওয়ার্কের মাধ্যমে আমরা প্রোগ্রামিং ফান্ডামেন্টাল জ্ঞান দেওয়ার চেষ্টা করেছি। এর সাথে প্রব্লেম সল্ভিং এর নিনজা টেকনিকও শেখানোর চেষ্টা করেছি যা আমার বিশ্বাস শুধু প্রোগ্রামিং প্রব্লেম না, আপনার জীবনের যে কোনো প্রব্লেমকে সল্ভ করতে সাহায্য করবে। আর একটা চেষ্টা আমরা করেছি, সেটা হচ্ছে প্রোগ্রামিং আর বাস্তব জীবনের মিল খুঁজে বের করে দেখিয়েছি, চেষ্টা করেছি প্রোগ্রামিং কে আপনার মাতৃভাষায় রূপান্তর করার। 39 | 40 | 46 | -------------------------------------------------------------------------------- /src/docs/next/challenges.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: '21 Days Challenge' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/next/examples.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Examples And Samples' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/next/what-next.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'What Next to Learn?' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | -------------------------------------------------------------------------------- /src/docs/problem-solving/after-solved-a-problem.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'After Solved A Problem' 3 | --- 4 | 5 | আমরা লাস্ট ডকুমেন্টে প্রব্লেম সল্ভিং এর ছয়টা স্টেপ দেখেছি এবং সেই অনুযায়ী প্রব্লেম সল্ভ করাও দেখেছি। এই প্রাকটিস আমরা প্রতিটা প্রব্লেমের সাথেই অ্যাপ্লাই করবো। কিন্তু তারপরেও আমাদের জ্ঞানটা এখনো পরিপক্ব না। আমাদের জ্ঞানকে পরিপক্ব করার জন্য আরও অনেক গুলো স্টেপের মধ্য দিয়ে যেতে হবে। আমি মনে করি, প্রব্লেম সল্ভিং এর ছয়টা স্টেপের থেকে পরবর্তী চারটা স্টেপ অনেক বেশি জরুরি এবং আপনার ব্রেইন বিউলডিং এ সব থেকে বেশি কার্যকর ভূমিকা রাখবে। 6 | 7 | একটা সমস্যা সমাধান করার পরে আমাদের নিম্নোক্ত চারটি স্টেপ অবশ্যই ফলো করতে হব। একটা স্টেপও বাদ দেওয়া যাবে না। স্টেপ গুলো হলো - 8 | 9 | 1. Find Similar Problems 10 | 2. Solve Similar Problems 11 | 3. Explore Documentation 12 | 4. Writedown The Learning Experience 13 | 14 |
15 | 16 | ## Find Similar Problems: 17 | 18 | প্রোগ্রামিং এ একটা সমস্যা সমাধান করার থেকে বেশি গুরুত্বপূর্ণ বিষয় হচ্ছে ওই সমস্যাটাকে বাস্তবের সাথে মিলিয়ে দেখা, একই ধরনের আরও কিছু সমস্যা খুঁজে বের করা। প্রোগ্রামিংএ এই রকম সমস্যা আপনি কম সময়ই খুঁজে পাবেন যেগুলো খুবই ইউনিক। আপনাকে খুজতে হবে, প্রচুর খুঁজতে হবে। একটা সমস্যা সমাধান করার পরে সেই সমস্যার মতো আরও কিছু সমস্যা যদি আপনি খুঁজে না পান, তার মানে আপনি ওই বিষয়টা এখনো পুরোপুরি বুঝতেই পারেন নি। একজন প্রোগ্রামার হিসেবে সমস্যার সমাধান করাটা যতটা জরুরি তার থেকে অনেক বেশি জরুরি সমস্যা খুঁজে বের করতে শেখা। কারণ সব সময় সমস্যার বর্ণনা খুব সুন্দর হবে এমনটা আশা করা একদম বোকামি। আপনাকেই ছোট্ট একটা ইনফরমেশন থেকে সমস্যা খুঁজে বের করে সমাধান করতে হতে পারে। আবার প্রোগ্রামিং এ প্যাটার্ন খুঁজে বের করাটাও খুব জরুরি বিষয়। একই প্যাটার্নের হাজার হাজার সমস্যা আপনি খুঁজে পাবেন যখন আপনি প্রোগ্রামিং এর প্যাটার্নটা ভালো ভাবে বুঝতে পারবেন। 19 | 20 |
21 | 22 | ## Solve Similar Problems: 23 | 24 | কয়েকটা সিমিলার প্রব্লেম খুঁজে বের করার পরের কাজটা খুব সহজ। চোখ বন্ধ করে সেগুলোও সল্ভ করে ফেলুন। একই কনসেপ্ট এর ৪-৫ টা প্রব্লেম সল্ভ করলে পুরো কনসেপ্টটা আপনার পরিষ্কার হয়ে যাবে। প্রব্লেম সল্ভ করার সময় আবার প্রব্লেম সল্ভিং এর ছয়টা স্টেপ মেনেই প্রব্লেম গুলো সল্ভ করবেন। 25 | 26 |
27 | 28 | ## Explore Documentation: 29 | 30 | ডকুমেন্টেশনের নাম শুনলেই আমাদের ভিতরে একটু ভয় কাজ করে। মনে হয় ডকুমেন্টেশন খুব কঠিন, আমার মতো বিগিনারের জন্য ডকুমেন্টেশন না। একদম ভুল কথা, ডকুমেন্টেশন সবার জন্য। আমি মানছি প্রথম দিকে ডকুমেন্টেশন বুঝতে একটু সমস্যা হবে। কিন্তু আপনাকে প্রথমেই ডকুমেন্টেশন পড়তে হবে না। আপনি একটা বিষয় ভালো ভাবে শিখলেন, সেটা দিয়ে কিছু সমস্যাও সমাধান করলেন। এবার সমস্যা সমাধান করার সময় যেই বিষয় গুলো আপনার বার বার সামনে আসলো সেগুলোর ডকুমেন্টেশনটা দেখুন, বোঝার চেষ্টা করুন। কারণ ডকুমেন্টেশন হচ্ছে যে কোনো টেকনোলজি শেখার আল্টিমেট রিসোর্স। আর ডকুমেন্টেশন পড়া হচ্ছে একধরনের প্রাকটিস। আপনি ডকুমেন্টেশন বুঝেন আর নাই বুঝেন আপনাকে পড়তে থাকতে হবে। আপনাকে ডকুমেন্টেশন পড়ার প্রাকটিস করতে থাকতে হবে। একটা সময় এমন হয়ে যাবে যে, কোনো ল্যাংগুয়েজ, লাইব্রেরী বা ফ্রেমওয়ার্ক শেখার জন্য আপনার কোনো কোর্স এনরোল করার দরকার হবে না। শুধুমাত্র ডকুমেন্টেশন দেখেই শিখতে পারবেন। 31 | 32 |
33 | 34 | ## Writedown The Learning Experience: 35 | 36 | এই পুরো সেশনের সব থেকে মজার এবং সব থেকে কমপ্লিকেটেড পার্ট হচ্ছে এটা। আপনারা নিশ্চয় জানেন আমরা Stack Journal রিলিজ করেছি? কেন করেছি? আমরা Stack Learner এর মধ্যে কি করি, কি না করি, কি একসেপ্ট হয়, কি রিজেক্ট হয় সমস্ত রিসার্স আমরা জার্নালে পাবলিশ করি। আপনি খুঁজলে প্রচুর আর্টিকেল পাবেন যে গুলো SL3 Framework এর জন্য লেখা কিন্তু রিজেক্ট হয়েছে। আমরা সেগুলো রেখে দিয়েছি জার্নাল হিসেবে। ঠিক একই ভাবে আপনি সারা দিন কি শিখলেন, কি পড়লেন, কি কি প্রব্লেম সল্ভ করলেন পুরো জার্নিটা আপনি কোথাও লিখে রাখতে পারেন। অনেকটা ডায়েরি লেখার মতো, তবে এটা হবে আপনার প্রোগ্রামিং ডায়েরি। সারাদিন আপনি কি করেছেন তা যখন আপনি লিখবেন তখন আপনার পুরো প্রোসেসটা আবার রিক্যাপ হয়ে যাবে। আপনি ইচ্ছে করলে ভিডিও ব্লগও তৈরি করতে পারেন। আবার ইচ্ছে করলে আপনার লেখা, ভিডিও কোনো একটা অনলাইন প্লাটফর্মে পাবলিশও করতে পারেন। এতে করে অন্যেরও যেমন উপকার হতে পারে, আবার আপনার কন্টেন্ট যদি মানুষের পছন্দ হয় এখান থেকে আর্নিংস এর ও একটা রাস্তা হয়ে যেতে পারে। 37 | 38 |
39 | 40 | **Problem Solving + Get Stable** দুইটা মিলে সর্বমোট দশটা স্টেপ আপনাকে মেনে চলতে হবে। খুব বেশি দিন না, মাত্র ২১ দিন আপনি শুধু এই প্রাকটিসটা চালাবেন। ২১ দিনে মাত্র ২১ টা সমস্যা আপনি এই ভাবে সমাধান করুন। এর পরে আপনাকে আর বলে দিতে হবে না যে কি করতে হবে। এর পরে আর এই ফ্রেমওয়ার্ক মেনে কাজ করার কোনো দরকার নেই। তবে মনে রাখবেন, ২১ দিন যেন টানা ২১ দিন হয়। যদি ২০ নাম্বার দিনে এসেও এই রুটিন ব্রেক হয়ে যায় তাহলে আবার প্রথম দিন থেকে শুরু করতে হবে। এই ২১ দিনে কি কি সমস্যা সমাধান করবেন তার লিস্ট আমরা আপনাকে প্রোভাইড করবো। এই ২১ দিনের এক্সপেরিয়েন্স আপনি আমাদের ফেসবুক গ্রুপে অথবা আমাদের জার্নালেও শেয়ার করতে পারবেন। আর এই ২১ দিন পর থেকে আপনি অনলাইন জাজে প্রব্লেম সল্ভ করতে পারেন। প্রোগ্রামিং ল্যাংগুয়েজ ফোকাস করে নেক্সট স্টেপে যেতে পারেন, অবজেক্ট অরিয়েন্টেড, ডেটা স্ট্রাকচার, অ্যালগোরিদম শিখতে পারেন। আর কি কি করতে পারেন তা আমাদের [What Next](/what-next) সেকশনে জেনে যাবেন। 41 | -------------------------------------------------------------------------------- /src/docs/problem-solving/competitive-programming.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Competitive Programming' 3 | --- 4 | 5 | একজন ভালো প্রোগ্রামার হওয়ার একমাত্র উপায় হচ্ছে প্রচুর কোড করা। কোড করতে হলে আপনাকে প্রচুর চিন্তা করতে হবে, প্রোগ্রামিং ফান্ডামেন্টালস নিয়ে ভাবতে হবে, সুডো কোড দিয়ে প্রব্লেম সল্ভ করতে হবে, মানে আমরা যা যা দেখিয়েছি তার সব কিছুই রিপিটেডলি করে যেতে হবে। আর এগুলো বার বার করতে করতে আপনি একজন ভালো প্রব্লেম সল্ভার, সহজ কথায় বললে একজন ভালো প্রোগ্রামার হয়ে যাবেন। তবে আবারও বলি, আপনাকে প্রচুর পরিমাণ কোড করতে হবে। তাহলে এত সমস্যা কোথায় পাবো? একটু যারা এক্সপার্ট হয়ে গেছে তাদের প্রব্লেম খোঁজা নিয়ে সমস্যা হয় না। কারণ তারা যেদিকে তাকায় সেদিকেই প্রব্লেম দেখতে পায়। কিন্তু বিগিনারসরা? তারা কি করবে? তাদের জন্য সহজ সমাধান হচ্ছে OJ বা অনলাইন জাজ। 6 | 7 | ## What is Online Judge? 8 | 9 | জাজের নাম শুনলেই আমাদের মনে হয় কেউ একজন হয়তো অনলাইনে বসে থাকবে, আমরা কি কোড করছি, ঠিক করছি না ভুল করছি সেগুলো দেখবে। ভুল করলে কান ধরে টেনে কান লাল করে দিবে। এই রকম অসংখ্য অদ্ভুত চিন্তা অনেকের ভিতরেই থাকে। আর কারোর কথা না জানলেও আমি আমারটা বলতে পারি। আমি কিছু দিন আগেও অনলাইন জাজকে ভয় পেতাম। ওরে বাবা, অনালাইন জাজ 😨। 10 | 11 | ব্যাপারটা আসলে মোটেও এরকম ভয় পাওয়ার মতো কিছু না। অনলাইন জাজ হচ্ছে একধরনের সফটওয়্যার। এখানে হাজার হাজার প্রোগ্রামিং প্রব্লেম লিস্টিং করা থাকে। সুন্দর করে বর্ণনা করে উদাহরণসহ একটা সমস্যা দেওয়া থাকে। সমস্যাটা সমাধান হওয়ার পরে তারা কি ইনপুট দিবে আর সেই ইনপুটের জন্য কি আউটপুট আসতে পারে তারও কিছু স্যাম্পল দেওয়া থাকে। আমাদের কাজ হচ্ছে পছন্দ মতো যেকোনো একটা প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে প্রব্লেমটা সল্ভ করা। প্রব্লেম সল্ভ করার স্টেপ গুলো কিন্তু আগেই আমরা বলে দিয়েছি। সেই অনুযায়ী সল্ভ করে কোড লিখে কোডটা সাবমিট করতে হয়। এই অনালাইন জাজ সফটওয়্যার আগে থেকেই জানে যে এই সমস্যার জন্য কি ইনপুট দিতে হবে, আর কি ইনপুট দিলে কি আউটপুট আসার কথা। কারণ সমস্যা তো আমরা তার কাছ থেকেই নিয়েছি তাই না? 12 | 13 | আমরা যখন আমাদের কোড সাবমিট করি তখন অনলাইন জাজ এই কোডটা তার কাছে থাকা কম্পাইলার ব্যবহার করে রান করে। সে কিন্তু ভুল করেও আপনার কোডের দিকে তাকায় না। অনালাইন জাজের কোড নিয়ে কোনো মাথা ব্যাথা নেই। তার মাথা ব্যাথা তিনটা বিষয়ের ওপরে, প্রথমত আপনি টাইম লিমিট এক্সসিড করছেন কি না? দ্বিতীয়ত আপনি মেমরি লিমিট এক্সসিড করছেন কি না? আর তৃতীয়ত নির্দিষ্ট ইনপুটের জন্য আপনার কোড সঠিক আউটপুট দিচ্ছে কি না? এর বাইরে অনালাইন জাজের কোনো মাথা ব্যাথা নেই। জাজের কাছে থাকা কম্পাইলারে আপনার কোড প্রথমে কম্পাইল করা হবে। কম্পাইল করার সময়ই যদি কোনো ইরোর আসে যেমন সিনট্যাক্স ইরোর তখন আপনার কাছে মেসেজ আসবে যে কোড এক্সেপ্টেড হয় নি। এখানে কম্পাইলেশন ইরোর ঘটেছে। যদি কোড সঠিক কম্পাইল হয় এর পরের স্টেপে জাজ কোডটাকে রান করবে, রান করার সময় যদি কোনো ইরোর হয় যেমন ইন্টিজার নাম্বারের জায়গায় আপনি ডাবল নাম্বার দিয়েছেন তাহলে এটা রানটাইম ইরোর শো করবে। যদি এ যাত্রাতেও কোনো সমস্যা না থাকে তাহলে কোডের এক্সিকিউশন টাইম এবং মেমরি চেক করা হবে। যদি কোনো একটা লিমিট ক্রস করে তাহলে আপনাকে সুন্দর করে ইরোর মেসেজ শো করবে এবং আপনাকে বলবে আমরা আপনার কোড এক্সেপ্ট করতে পারছি না। কারণ আপনি টাইম অথবা মেমরি লিমিট ক্রস করে ফেলেছেন। এই যাত্রা পার করার পরে তারা হাজার হাজার র‍্যান্ডমলি জেনারেটেড ডেটা আপনার কোডে ইনপুট দিবে ইনপুট। প্রতিটা ইনপুটের জন্য আগে থেকেই তাদের আউটপুট জেনারেট করা থাকে। আপনার কোডের আউটপুট আর জাজের আউটপুট যদি এক না হয় তাহলে রং অ্যান্সার। এই যে জাজ একটার পরে একটা র‍্যান্ডম ইনপুট করছে আপনার প্রোগ্রামটা টেস্ট করার জন্য, এই প্রতিটা ইনপুটকে বলা হয় টেস্ট কেস। মনে করলাম জাজ ১০০ টা টেস্ট ইনপুট প্রোভাইড করেছে, এবং ৯৫ টা ইনপুটের জন্য আউটপুট সঠিক এসেছে। মানে জাজের আউটপুটের সাথে আপনার আউটপুট মিলে গিয়েছে। কিন্তু মাত্র ৫ টা ইনপুটের জন্য মেলে নি। তার মানে জাজ আপনাকে বলবে ৫% রং অ্যান্সার। আবার যদি আপনার কোডের আউটপুট এবং জাজের আউটপুট শতভাগ মিলে যায় কিন্তু দুইটা আউটপুট দেখতে শতভাগ একরকম না হয় তাহলে সেটা হচ্ছে প্রেসেন্টেশন ইরোর। এত গুলো ইরোর পাশ করার পরেও যদি আপনার কোড সার্ভাইভ করতে পারে তাহলে আপনার কোডের পাশে সবুজ কালিতে লেখা আসবে অ্যাক্সেপ্টেড। 14 | 15 | একজন বিগিনার সচরাচরই এত প্যারা মেনে নিতে চাই না। তারা প্রথম প্রথম সাবমিট করলেই ইরোর শো করে। কি বা কেন ইরোর শো করছে তারা সেটাও বুঝতে পারে না। তাই তারা বিরক্ত হয়ে অনালাইন জাজে প্রব্লেম সল্ভিং করায় ছেড়ে দেয়। কিন্তু ভাইয়া একটু ধৈর্য্য ধরতে হবে। আপনাকে মনে রাখতে হবে আছাড় না খেয়ে আপনি একবারেই হাঁটা শেখেন নি। প্রথম ১০ টা প্রব্লেম সল্ভ করতে পারলেই আপনি একটা নেশার মধ্যে পরে যাবেন। আর যেই নেশাটা খুবই ভালো। হাজারটা প্রব্লেম সল্ভ করার পরেও কোনো প্রব্লেম সল্ভার বলতে পারে না যে তার পরবর্তী প্রব্লেম এক চান্সেই এক্সেপ্ট হবে। অনেক সময় এমন হয় যে স্যাম্পল যে কয়টা ইনপুট দেওয়া আছে তার আউটপুটের সাথে আপনার আউটপুট মিলে যাচ্ছে। কিন্তু সাবমিট করলে দেখায় ১০% রং অ্যান্সার। একটা বিষয় আপনাকে মাথায় রাখতে হবে, স্যাম্পল হিসেবে এখানে ৩-৫ টা টেস্ট কেস তারা দিয়েছে, কিন্তু যখন আপনি আপনার কোড সাবমিট করছেন তখন হাজার হাজার টেস্ট কেস পার করার পরেই আপনার কোড এক্সেপ্ট করা হবে। ইরোর আসছে মানে ভুলটা আপনার, অনলাইন জাজের নয়। এই সিম্পল সত্য কথাটা সব সময় মাথায় রাখতে হবে। 16 | 17 | ## Competitive Programming 18 | 19 | অনলাইন জাজে প্রব্লেম সল্ভ করা আর কম্পিটিটিভ প্রোগ্রামিং করা এক জিনিস না। নিজের লজিক্যাল স্কিল, প্রব্লেম সল্ভিং স্কিল বৃদ্ধি করার জন্য অনলাইন জাজে প্রব্লেম যে কেউ সল্ভ করতে পারে। এর সাথে কম্পিটিটিভ প্রোগ্রামিং এর কোনো সম্পর্ক নেই। কম্পিটিটিভ প্রোগ্রামিং মানে হচ্ছে আপনি অন্যের সাথে প্রোগ্রামিং প্রব্লেম সল্ভিং নিয়ে কম্পিটিশন করবেন। এটা পুরো পুরি ভিন্ন একটা মাইন্ডসেট। এর জন্য ভিন্ন প্রাকটিস, ভিন্ন স্কিল এর দরকার। ব্যাপারটা অনেকটা এরকম যে, প্রব্লেম সল্ভিং করছেন মানে আপনি এলাকার মাঠে ক্রিকেট খেলছেন। আর কম্পিটিভ প্রোগ্রামিং করছেন মানে আপনি ন্যাশনাল টিমের প্লেয়ার। ক্রিকেট আমরা সবাই ভালবাসলেও সবাই কিন্তু ন্যাশনাল টিমে খেলি না, বেশির ভাগ মানুষ এলাকার মাঠে মাশরাফি হয়েই জীবন পার করে দেয়। কম্পিটিভ প্রোগ্রামিং সম্পূর্ণ ভিন্ন একটা সেক্টর এবং চাইলে সেটা নিয়ে পুরো একটা বই লিখে ফেলা যাবে। তবে সেটা আমাদের SL3 Framework এর অন্তর্ভুক্ত কোনো বিষয় নয়। 20 | 21 | ## Real Life Problem Solving 22 | 23 | আমার কাছে সব থেকে ইন্টারেস্টিং লাগে বাস্তব জীবনের সমস্যা সমাধান করার কাজটা। অনলাইন জাজে যখন আপনি প্রব্লেম সল্ভ করবেন তখন এমন অনেক সমস্যা আসবে যা দেখে আপনার মনে হবে এটা আমার বাস্তবে কোথাও কাজে লাগবে না। এটা একটা ইমাজিনারি প্রব্লেম। যদিও কোনো কোডই ফ্যালনা নয়, সমস্ত কোডই আপনার জীবনে প্রত্যক্ষ বা পরোক্ষ ভাবে কাজে লাগবে। তারপরেও অনেক সময় এরকম মনে হতেই পারে। অনেক সময় আপনার কোনো একটা সফটওয়্যার বানানোর ইচ্ছে হতে পারে। কোনো একটা সফটওয়্যার ব্যবহার করতে করতে তার কোনো ফিচার দেখে নিজের মাথায়ও কোনো আইডিয়া আসতে পারে। আমার কাছে পার্সোনালি রিয়েল লাইফের সমস্যা খুঁজে বের করে ইমপ্লিমেন্ট করার মতো মজার কাজ আর কিছু নেই। এবং আপনারাও চেষ্টা করবেন এই কাজটা করার। কারণ আমাদের প্রোগ্রামার হওয়ার আল্টিমেট গোল কিন্তু এটাই। 24 | -------------------------------------------------------------------------------- /src/docs/problem-solving/guides.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Problem Solving Guides' 3 | --- 4 | 5 | প্রব্লেম সল্ভিং, প্রব্লেম সল্ভিং এবং প্রব্লেম সল্ভিং। একজন ভালো প্রোগ্রামার হওয়ার জন্য যে সবার প্রথমে একজন ভালো প্রব্লেম সল্ভার হওয়া প্রয়োজন সেটা আমরা শুরু থেকেই জেনে আসছি। আমাদের SL3 Framework এর মূল ভিত্তিও দাঁড়িয়ে আছে এখানেই যে কিভাবে আপনারা সমস্যার সমাধান করলে তা আপনার লজিক বিউল্ডিং এ সাহায্য করবে এবং সমস্যাটাও ভালো ভাবে সল্ভ হবে। কিন্তু তারপরেও আপনি যখন প্রব্লেম সল্ভ করতে যাবেন তখন অনেক ফ্রাস্ট্রেশনের শিকার হবেন। আপনার মনে হতে পারে প্রোগ্রামিং আপনার জন্য না, আপনি কিছুই জানেন না। এরকম মনে হওয়াটা স্বাভাবিক। তার কারণ হচ্ছে লুপ, অ্যারে, ফাংশন সম্পর্কে জানা আর সেটা ব্যবহার করে কোনো সমস্যা সমাধান করা এক জিনিস নয়। আপনাকে ধৈর্য্য ধারণ করে সামনে এগিয়ে যেতে হবে। একবারেই তো সফলতা এসে ধরা দিবে না, তবে সফল প্রব্লেম সল্ভার হওয়ার কিছু গাইডলাইন আমরা এখানে আপনাকে দেওয়ার চেষ্টা করছি। 6 | 7 |
8 | 9 | ## Use White Board 10 | 11 | আমার মতে একজন প্রোগ্রামারের বাসায় ছোটোখাটো একটা হোয়াইট বোর্ড থাকা উচিৎ। একটা হোয়াইট বোর্ডের দাম মাত্র ৪০০ টাকা। ছোট একটা বোর্ড কিনে আপনার টেবিলের পাশে কোথাও ঝুলিয়ে রাখতে পারেন। যে কোনো একটা সমস্যা আপনি যখন বোর্ডে সমাধান করবেন তখন খুব দ্রুত আপনি এর সমাধান বের করে আনতে পারবেন। তবে যদি বোর্ড ব্যবস্থা করা না যায় সেই ক্ষেত্রে খাতা, কলম, পেন্সিল সব সময় সাথে রাখতে হবে। আপনাকে বিশ্বাস করতে হবে, যদি আপনি একটা সমস্যা খাতা কলমে বা বোর্ডে সমাধান করতে না পারেন তাহলে কোনো ভাবেই আপনি সেই সমস্যা কম্পিউটারে সমাধান করতে পারবেন না। সমস্যাটা নিয়ে হিজিবিজি নোট করতে থাকেন। লিখতে থাকেন, আঁকাতে থাকেন। কিন্তু সব কিছুই আপনাকে কম্পিউটারের বাইরে খাতা অথবা বোর্ডে করতে হবে। লজিক বিউল্ডিং এর ক্ষেত্রে এটা অন্যতম একটা উপায়। 12 | 13 |
14 | 15 | ## Unit Programming 16 | 17 | ইউনিট প্রোগ্রামিং বলতে এখানে বোঝানো হচ্ছে সব থেকে ছোট ছোট সমস্যা গুলোকে। মূলত ইউনিট টেস্টিং থেকে নামটা নিয়ে আমরা ইউনিট প্রোগ্রামিং বানিয়েছি। একটা সমস্যা সবার প্রথমে খুব ভালো ভাবে বুঝতে হবে। পড়তে হবে, লিখতে হবে। সেখান থেকে ছোট ছোট কাজ গুলোকে আলাদা করে ফেলতে হবে। একদম বিগিনার লেভেলের প্রব্লেম গুলোতে সাধারণত একটা ইউনিটেই কাজ হয়ে যায়। কিন্তু একটু বড় লেভেলে গেলেই আপনি দেখবেন সেখানে ভিন্ন ভিন্ন ইউনিটের কাজ আছে। সব গুলো ইউনিট প্রব্লেম আলাদা আলাদা করে সল্ভ করতে হবে। তারপরে সেটা জোড়া লাগাতে হবে বা ইন্টিগ্রেট করতে হবে। আপনি শুধুমাত্র তখনই ইউনিট প্রোগ্রামিং করতে পারবেন যখন প্রব্লেমটা আপনি ভালো ভাবে বুঝতে পারবেন। প্রোগ্রামিং প্রব্লেম সল্ভ করার একমাত্র উপায় হচ্ছে ভালো ভাবে সমস্যাটা বোঝা। এই ক্ষেত্রে অনেক নতুন নতুন টার্মসের সাথে আপনি পরিচিত হবেন। যেগুলো জানেন না, সেগুলো গুগলে সার্চ করে দেখে নেন। শিখে নিয়ে, ভালো করে বুঝে তারপরে কোড শুরু করেন। 18 | 19 |
20 | 21 | ## Error is My Only Friend 22 | 23 | প্রোগ্রামারদের বাস্তব জীবনে বন্ধু বান্ধবের সংখ্যা তুলনামূলক অনেক কম থাকে। তাই তারা খুব দ্রুত ফ্রাস্ট্রেটেড হয়ে যায়। একটা সমস্যা আসলে সেটা নিয়ে যদি কারোর সাথে আলোচনা করা যায় তাহলে ফ্রাস্ট্রেটেড লাগে না, প্রব্লেমটা দ্রুত সল্ভ করা যায়। আমি দেখেছি, বিগিনাররা প্রোগ্রামিংকে ভয় পায় শুধুমাত্র একটা কারণে। আর সেটা হচ্ছে ইরোর মেসেজ, লাল অক্ষরে লেখা বড় বড় ইরোর মেসেজ। যেটা আসলেই বিগিনার প্রোগ্রামারদের ঘাম পরা শুরু হয়ে যায়। কিন্তু মজার বিষয় কি জানেন? প্রোগ্রামারদের যদি সত্যিকারের কোনো বন্ধু থেকে থাকে তাহলে সেটা হচ্ছে এই ইরোর মেসেজ। সে আপনাকে একজন লয়াল ফ্রেন্ডের মতো সব সময় গাইড করছে যে কি করা যাবে আর কি করা যাবে না। আপনার কাজ হচ্ছে শুধু ইরোর মেসেজটা ভালো করে পড়ে বোঝা যে সে কি বোঝাতে চাচ্ছে। আমি মানছি সব সময় ইরোর মেসেজ পড়ে বোঝা একজন বিগিনারের পক্ষে সম্ভব না। যখন ইরোর মেসেজ বুঝতে পারছেন না, তখন পুরো ইরোর মেসেজটা কপি করে গুগলে সার্চ করেন। দেখবেন হাজার হাজার রেসাল্ট, হাজার হাজার এক্সপ্লেনেশন পাচ্ছেন। যদি কোনো ইরোর আপনি ফেস করেন তাহলে নিশ্চিত থাকবেন যে আপনার পূর্বে এই একই ইরোর অন্ততপক্ষে আরও হাজার খানেক মানুষ ফেস করেছে। ইরোর মেসেজকে নিজের বন্ধু ভাবুন। যতদ্রুত ইরোরকে নিজের বন্ধু ভাবতে পারবেন তত দ্রুত আপনি একজন ভালো প্রোগ্রামার হতে পারবেন। 24 | 25 |
26 | 27 | ## Be Cool When It Comes to OJ 28 | 29 | সাধারণ ভাবে প্রব্লেম সল্ভ করা আর অনলাইন জাজে প্রব্লেম সল্ভ করার বিষয়টা মোটেও একরকম না। অনলাইন জাজের ক্ষেত্রে সর্বদিক থেকে চেষ্টা করা হয় যেন আপনার কোড কাজ না করে। সব রকম চেষ্টার পরেও যদি আপনার কোড কাজ করে তাহলে সেই কোড এক্সেপ্ট করা হবে। আর যদি কোনো একটা ক্ষেত্রেও ছোটোখাটো কোনো প্রব্লেম থাকে তাহলে রিজেক্ট করে দেবে। অনেক সময় আমরা কোড লিখে অল্প কয়েকটা টেস্ট কেস দিয়ে সঠিক আউটপুট পায়, কিন্তু অনলাইন জাজে সাবমিট করলে সেটা রিজেক্ট করে দেয়। তখন এটা মনে হওয়া খুব স্বাভাবিক যে অনলাইন জাজে ভুল আছে। কিন্তু বিশ্বাস করেন ভুল আপনার কোডেই আছে। এই রকম অবস্থায় রাগ হওয়া খুব স্বাভাবিক একটা বিষয়, কিন্তু রাগান্বিত হয়ে কোনো সমাধান আসবে না। নিজের ভুল মেনে নিয়ে ঠাণ্ডা মাথায় আবার চেষ্টা করে যেতে হবে। প্রব্লেম সল্ভাররা সব সময় কুল মাইন্ডেড হয়ে থাকে। 30 | 31 |
32 | 33 | ## Forward Step By Step 34 | 35 | বিগিনারদের ক্ষেত্রে একটা কমন বৈশিষ্ট্য হচ্ছে একটা প্রব্লেম কিছুক্ষণ চেষ্টা করবে, কয়েকবার সাবমিট করে রিজেক্ট পেলেই এই প্রব্লেম বাদ। অন্য সহজ কোনো প্রব্লেম ধরতে হবে। আমি নিজেও প্রথম দিকে এইরকম ছিলাম। কিন্তু একটা কথা আপনাকে মনে রাখতে হবে, আপনি প্রব্লেম সল্ভিং কিন্তু কাউকে দেখানোর জন্য করছেন না। করছেন নিজের লজিক বিউল্ডিং এর জন্য। তাই প্রব্লেম সল্ভ না হলে স্কিপ করে যাওয়ার কোনো মানে নেই। একটা প্রব্লেম এর পিছনে সময় দিন, যতক্ষণ না সল্ভ হচ্ছে ততক্ষণ লেগে থাকুন। এই লেগে থাকার মানুষিকতাটাও প্রোগ্রামারদের জন্য খুব গুরুত্বপূর্ণ একটা বিষয়। 36 | 37 |
38 |
39 | 40 | > এই সেকশনটা প্রতিনিয়ত আপডেট হতে থাকবে। প্রোগ্রামিং এবং প্রব্লেম সল্ভিং বিষয়ক গাইডলাইন আমরা এখানে প্রোভাইড করতে থাকবো. 41 | -------------------------------------------------------------------------------- /src/docs/problem-solving/strategy.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Problem Solving Strategy' 3 | --- 4 | 5 | প্রোগ্রামিং এ আমাদের আল্টিমেট গোল হচ্ছে বাস্তব জীবনের বিভিন্ন সমস্যাকে সমাধান করা। এই সমস্যা সঠিক ভাবে সমাধান করার জন্যই এত এত প্রোগ্রামিং ল্যাংগুয়েজ, এত এত ডেটা স্ট্রাকচার অ্যালগোরিদম, এত এত সব আলোচনা। প্রোগ্রামিং এ প্রব্লেম খুবই সাধারণ একটি শব্দ। 6 | 7 |
8 | 9 | ## Problem is not A Problem 10 | 11 | প্রোগ্রামিং করা শুরু করার পর থেকেই আপনি চারপাশে শুধু একটা শব্দই শুনবেন, সেটা হচ্ছে প্রব্লেম। প্রব্লেম, প্রব্লেম আর প্রব্লেম। আমি নিজেই প্রোগ্রামিং শিখতে পারছি না, প্রব্লেম এ আছি। এর পর আবার চারপাশে এত এত প্রব্লেম? আসলে প্রব্লেম এর নাম শুনে ভয় পাওয়ার কিছুই নেই। এই প্রব্লেম আসলে সেই প্রব্লেম না। 12 | 13 | প্রোগ্রামার হিসেবে আমাদের কাজ হচ্ছে বাস্তব জীবনের যে কোনো কাজকে কম্পিউটারকে দিয়ে করানো। যেমন আমি কম্পিউটারকে দিয়ে ফিবোনাকি সংখ্যা বের করার একটা প্রোগ্রাম লিখতে চাই। এটাই একটা প্রব্লেম। আমি কোড লিখতে পারছি না বা পারবো না, এটা প্রব্লেম না। ফিবোনাকি সংখ্যা বের করা এটা হচ্ছে প্রব্লেম যা আমাদেরকে সল্ভ করতে হবে। এখানে যে কোনো প্রোগ্রামকেই প্রব্লেম বলে। সহজ কথায় যা আমরা সমাধান করে বের করতে চাচ্ছি সেটাই একটা প্রব্লেম। অনেকটা গণিত বই এর মতো। 14 | 15 | এই প্রব্লেম গুলো অনেক সময় সুন্দর করে বর্ণনা করা থাকে। আবার অনেক সময় দুই এক লাইনেই শেষ হয়ে যায়। আমাদেরকে প্রব্লেম সল্ভ করার জন্য প্রয়োজনীয় সমস্ত উপাত্ত খুঁজে বের করতে হয়। যেমন ফিবোনাকি সমস্যাটার কথায় চিন্তা করা যাক। এখানে সমস্যা এভাবেও বর্ণনা করা থাকতে পারে যে - একটা নাম্বার ইনপুট দেওয়া হবে, আপনাকে ওই পর্যন্ত নাম্বারের ফিবোনাকি সিরিজ বের করে আনতে হবে। আবার অন্য একটা সমস্যার ক্ষেত্রে ফিবোনাকি সংখ্যা কি, কেন, কিভাবে সব কিছু বর্ণনা করে তারপরে আপনাকে এর সিরিজ বের করতে বলা হতে পারে। যখন আপনি বাস্তব জীবনে কোনো সফটওয়্যার বানাবেন, তখন আপনাকে কেউ বলবেই না যে এখানে ফিবোনাকি সংখ্যার সিরিজ দরকার। আপনাকেই খুঁজে বের করতে হবে যে সমস্যার সমাধান করতে কি কি দরকার। তবে এই রকম সমস্যা অনেক পরে আসবে। 16 | 17 |
18 | 19 | ## Problem Solving Steps 20 | 21 | যে কোনো সমস্যা সমাধান করার ভিন্ন ভিন্ন স্ট্রেটিজি থাকে। প্রত্যেকটা মানুষের জন্য এই স্ট্রেটিজি ভিন্ন হতে পারে। তবে আমরা কিছু স্টেপস খুঁজে পেয়েছি যেগুলো আমরা মনে করি সব ধরনের সমস্যা সমাধান করার জন্যই প্রয়োজন। সব থেকে বড় বিষয় এই স্টেপস গুলো মেনে চললে একটা সমস্যা বুঝতে, তার থেকে সমাধান খুঁজে বের করতে আপনার খুব বেশি কষ্ট করতে হবে না। সব থেকে বড় বিষয়, আস্তে আস্তে আপনার লজিক খুব ভালো ভাবে বিউল্ড হয়ে যাবে এবং আপনি বড় বড় সমস্যার সমাধান খুব দ্রুতই করে ফেলতে পারবেন। 22 | 23 | সর্বমোট ছয়টা স্টেপে আমরা যে কোনো সমস্যাকে সমাধান করতে পারি - 24 | 25 | 1. Understant The Problem 26 | 2. Breakdown The Problem 27 | 3. Writedown The Problem 28 | 4. Breakdown The Solution 29 | 5. Writedown The Solution 30 | 6. Implement The Solution 31 | 32 | এই ছয়টা স্টেপ ভালো ভাবে বোঝার জন্য আমরা একটা প্রোগ্রামিং সমস্যার সাহায্য নিতে পারি। ছয়টা স্টেপও বোঝা হবে সাথে সাথে আমরা কিভাবে এই স্টেপ গুলো ব্যবহার করে একটা সমস্যার সমাধান করতে পারি সেটাও দেখা হবে। 33 | 34 | **সমস্যাঃ** আরিফ সাহেব একজন ফরেক্স ট্রেডার। শেয়ার মার্কেট সম্পর্কেও তিনি অনেক জ্ঞান রাখেন। বিগত ১৫ বছর ধরে দক্ষতার সাথে তিনি ফরেক্স মার্কেটে নিজের অবস্থান ধরে রেখেছেন। তিনি সিদ্ধান্ত নিয়েছেন নিজেই একটি ফরেক্স ব্রোকার সাইট তৈরি করবেন। যেখানে তিনি মার্কেট এনালাইসিসের জন্য অত্যাধুনিক সব টুলস প্রোভাইড করবেন। তিনি জানেন মার্কেটের প্রাইস আপডাউন হয় গোল্ডেন রেশিও মেনে। তাই তিনি ডেভেলপারকে বললেন এমন একটি প্লাগইনস তৈরি করতে যেটা গোল্ডেন রেশিও ক্রস করলেই যেন তাকে একটা ইমেইল পাঠায়ে দেয়। 35 | 36 | ডেভেলপার খুঁজে দেখলেন গোল্ডেন রেশিও বের করার জন্য দরকার ফিবোনাকি সিরিজ। ফিবোনাকি সিরিজে প্রথম দুইটা নাম্বার একেবারে ফিক্সড। এই সিরিজের প্রথম ভ্যালু ০ এবং দ্বিতীয় ভ্যালু ১। তার পর থেকে প্রথম আর দ্বিতীয় ভ্যালু যোগ করেই চলতে থাকবে। মানে, তৃতীয় ভ্যালু ০+১=১, চতুর্থ ভ্যালু ১+১=২, পঞ্চম ভ্যালু ১+২=৩ এই ভাবে করে সিরিজ চলতে থাকবে। এখন ডেভেলপারের কাজ হচ্ছে একটা নাম্বার ইনপুট দেওয়া এবং অত তম সংখ্যায় ফিবোনাকি সিরিজের কোন সংখ্যাটা আছে সেটা খুঁজে বের করা। 37 | 38 | **সমাধানঃ** এখন আমরা ওপরের বর্ণিত সমস্যাকে আমাদের স্টেপ গুলোর মাধ্যমে সমাধান করার চেষ্টা করবো। 39 | 40 |
41 | 42 | ## Understand The Problem: 43 | 44 | আমাদের সর্বপ্রথম কাজ হচ্ছে ভালো করে সমস্যাটা বোঝা। কারণ সমস্যা ভালো ভাবে বুঝতে না পারলে কখনোই তার জন্য সমাধান তৈরি করা সম্ভব না। এই ব্যাপারটা অনেকটা ডাক্তার রোগীর মতো ব্যাপার। ডাক্তার যদি রোগীর রোগ ভালো ভাবে ধরতে না পারে তাহলে যেমন কোনো দিনও তার সঠিক চিকিৎসা করা সম্ভব না, ঠিক একই ভাবে প্রোগ্রামার যদি প্রব্লেম ভালো ভাবে বুঝতে না পারে তাহলে কোনো দিনও সেই সমস্যার সমাধান করা সম্ভব না। সব সময় যে সমস্যা খুব সুন্দর করে বর্ণনা করা থাকবে এমনটা না। অনেক সময় এমনটা হতে পারে যে এক লাইনেই সমস্যা বলে দেওয়া শেষ, বাকিটা আপনাকে খুঁজে বের করতে হবে। তবে উভয়ক্ষেত্রেই আপনার দায়িত্ব সমস্যাটা ভালো ভাবে বোঝা। উপরের সমস্যাটা বাংলা ভাষায় লেখা আছে। কিন্তু বাস্তব জীবনের সমস্যা গুলো কিন্তু বাংলা ভাষায় লেখা থাকবে না, থাকবে ইংরেজিতে। আপনি যদি ইংরেজি ভাষায় দূর্বল হয়ে থাকেন তাহলে চেষ্টা করবেন সবার প্রথমে সমস্যাটাকে বাংলা ভাষায় রূপান্তর করে নিতে। তারপরে সময় নিয়ে ভালো ভাবে সমস্যাটা বোঝার চেষ্টা করবেন। 45 | 46 |
47 | 48 | ## Breakdown The Problem: 49 | 50 | সমস্যাটা ভালো ভাবে বোঝার পরের কাজটা হচ্ছে সমস্যাটা ভালো ভাবে ব্রেকডাউন করা। একটা সমস্যার বর্ণনাতে এমন অনেক বিষয় বস্তু থাকবে যা আমাদের কখনোই দরকার হবে না। আবার কিছু কিছু সমস্যার ক্ষেত্রে যেখানে সমস্যার বর্ণনা খুব ভালো ভাবে দেওয়া থাকবে না সেখানে নতুন করে আরও কিছু বিষয় নিয়ে আমাদের চিন্তা করতে হবে। ওপরের সমস্যার ক্ষেত্রে প্রথম প্যারাতে আরিফ সাহেবের যেই গল্প বলা হয়েছে সেটা আসলে নিছক গল্পই। এর সাথে প্রোগ্রামিং প্রব্লেম এর কোনো প্রকার কোনো সম্পর্ক নেই। তাই ব্রেকডাউন করার সময় এই অংশটা আমরা পুরোপুরি বাদ দিয়ে দিতে পারি। কোন কোন লাইনে আমাদের কাজের কথা লেখা আছে, লজিকের বর্ণনা আছে, ভ্যারিয়েবল আছে সেটা খুঁজে বের করে মার্ক করে রাখতে পারি। 51 | 52 | ওপরের সমস্যাকে যদি আমরা ব্রেকডাউন করি তাহলে আমাদের জন্য কাজের লাইন গুলো হচ্ছে "এই সিরিজের প্রথম ভ্যালু ০ এবং দ্বিতীয় ভ্যালু ১। তার পর থেকে প্রথম আর দ্বিতীয় ভ্যালু যোগ করেই চলতে থাকবে। মানে, তৃতীয় ভ্যালু ০+১=১, চতুর্থ ভ্যালু ১+১=২, পঞ্চম ভ্যালু ১+২=৩ এই ভাবে করে সিরিজ চলতে থাকবে"। এই লাইন গুলোর ভিতরেই বলে দেওয়া আছে আমাদের কয়টা ভ্যারিয়েবল দরকার হবে, সমস্যা সমাধানের লজিকটা কি এবং আমাদের কি করতে হবে। 53 | 54 |
55 | 56 | ## Writedown The Problem: 57 | 58 | আপনি হয়ত ভাবছেন প্রব্লেম তো আমাকে লিখেই দিয়েছে, তাহলে আমি আবার কি লিখবো? একটা সমস্যা যখন আপনাকে দেওয়া হবে সেটা ফর্মেটেড থাকবে না। সেখানে অনেক হিজিবিজি কথা থাকবে যার সাথে আপনার সমস্যার কোনো মিল থাকবে না। প্রব্লেমটাকে ব্রেকডাউন করার পরে আপনি আপনার মতো করে আবার লিখে ফেলবেন। এবং পরবর্তীতে আপনার লেখা প্রব্লেম থেকে সল্যুশন খুঁজে বের করবেন। 59 | 60 | ওপরের সমস্যাকে যদি আমি আমার মতো করে লিখি তাহলে যেটা দাঁড়ায় - "ফিবোনাকি সিরিজের প্রথম ভ্যালু হচ্ছে ০ এবং দ্বিতীয় ভ্যালু হচ্ছে ১। প্রথম ভ্যালু এবং দ্বিতীয় ভ্যালু যোগ করলে আমি তৃতীয় ভ্যালু পাবো। এই সূত্র মেনে আমি যে কোনো তম নাম্বারের জন্য ফিবোনাকি নাম্বার বের করতে পারি।" 61 | 62 |
63 | 64 | ## Breakdown The Solution: 65 | 66 | সমস্যা নিয়ে অনেক আলোচনা করা হয়েছে, এবার আলোচনা করতে হবে সমাধান নিয়ে। আসলে প্রোগ্রামিং প্রব্লেম এর ক্ষেত্রে ভালোভাবে প্রব্লেম বোঝাটায় সব থেকে বড় কাজ। তাই প্রব্লেম ভালো ভাবে বোঝার জন্যই সব থেকে বেশি সময় দিতে হবে। প্রব্লেম বুঝতে পারার পরের কাজ হচ্ছে সল্যুশন টাকে ব্রেকডাউন করা। যদি আমরা ভালো ভাবে প্রব্লেমকে ব্রেকডাউন করতে পারি তাহলে সল্যুশন অলমোস্ট ব্রেকডাউন হয়ে যাবে। এখন শুধু আমাদের ভ্যারিয়েবল, অপারেশন এবং স্টেটমেন্ট গুলো খুঁজে বের করতে হবে। 67 | 68 | ওপরের সমস্যার সমাধান যদি আমরা ব্রেকডাউন করি তাহলে যেটা দাঁড়ায় - "প্রথম ভ্যালু রাখার জন্য একটা ভ্যারিয়েবল লাগবে, দ্বিতীয় ভ্যালু রাখার জন্য আর একটা ভ্যারিয়েবল লাগবে। যেহেতু এখানে সিরিজ এর কথা বলা হচ্ছে সেহেতু এখানে একটা লুপের প্রয়োজন হবে। আর অপারেশন হচ্ছে প্রথম ভ্যালু এর সাথে দ্বিতীয় ভ্যালু যোগ করে তৃতীয় ভ্যালু তৈরি করতে হবে। তৃতীয় ভ্যালু বের হয়ে গেলে দ্বিতীয় ভ্যালুকে প্রথম ভ্যালু এবং তৃতীয় ভ্যালুকে প্রথম ভ্যালু তে রূপান্তর করতে হবে। এইভাবে লুপ চলতেই থাকবে যতক্ষণ না পর্যন্ত আমরা আমাদের ইনপুট দেওয়া সংখ্যা পর্যন্ত পৌঁছাচ্ছি। ইনপুট নেওয়ার সময়ও আমাদের সতর্ক থাকতে হবে। সমস্যার ক্ষেত্রে আমাদের ইনপুট নেওয়ার বিষয়ে কিছু বলে না দিলেও আমরা শূন্য থেকে ছোট কোনো নাম্বার ইনপুট নিতে পারবো না, এই বিষয়টা মাথায় রাখতে হবে।" 69 | 70 |
71 | 72 | ## Writedown The Solution: 73 | 74 | যখন আমাদের কাছে ভ্যারিয়েবল আছে, অপারেশন সম্পর্কে আমরা জানি, কি কি স্টেটেমেন্ট ব্যবহার করতে হবে সেই বিষয়ে আমার প্লান করা শেষ তখন আমরা সরাসরি কোড করতে পারি। কিন্তু সরাসরি কোডে যাওয়ার আগেও আমি মনে করি স্টেপ গুলো সুডো কোডে একবার লিখে রাখা উচিৎ। ছোট প্রব্লেম এর ক্ষেত্রে এটা খুব একটা কার্যকর না। কিন্তু বড় প্রব্লেম এর ক্ষেত্রে বড় বড় প্রোগ্রামাররাও প্রথমে সুডো কোড লিখে তার পরেই কোড করেন। যদি আপনি ছোট থেকেই সুডো কোড লেখার অভ্যাস গড়ে তোলেন এটা ভবিষ্যতে আপনার অনেক কাজে লাগবে। সুডো কোড লেখার নির্দিষ্ট কোনো নিয়ম নেই, ভিন্ন ভিন্ন প্রোগ্রামিং ল্যাংগুয়েজের স্টাইলে আপনি সুডো কোড লিখতে পারেন। তবে আমার মতে নিজের মনের মাধুরী মিশিয়ে বোধগম্য হয় এভাবে সুডো কোড লিখলেও কোনো সমস্যা নেই। 75 | 76 | যদি ওপরের সমস্যাকে আমরা সুডো কোডে রূপান্তর করতে চাই তাহলে নিচের মতো করে লিখতে পারি - 77 | 78 | ```python 79 | START 80 | RANGE = 10 81 | FIRST_NUMBER = 0 82 | SECOND_NUMBER = 1 83 | IF RANGE IS SMALLER THAN 0: 84 | PRINT "INCORRECT RANGE" 85 | ELSE IF RANGE IS EQUAL TO ZERO: 86 | PRINT FIRST_NUMBER 87 | ELSE IF RANGE IS EQUAL TO ONE: 88 | PRINT SECOND_NUMBER 89 | ELSE: 90 | LOOP I=2 TO RANGE: 91 | THIRD_NUMBER = FIRST_NUMBER + SECOND_NUMBER 92 | FIRST_NUMBER = SECOND_NUMBER 93 | SECOND_NUMBER = THIRD_NUMBER 94 | I++ 95 | PRINT SECOND_NUMBER 96 | END 97 | ``` 98 | 99 |
100 | 101 | ## Implement The Solution: 102 | 103 | যদি সুডকোড পর্যন্ত আপনি সঠিক সুন্দর ভাবে পদার্পন করতে পারেন, তাহলে নিঃসন্দেহে আপনি আপনার পছন্দের যে কোনো ল্যাংগুয়েজেই সমাধানটা ইমপ্লিমেন্ট করতে পারবেন। শুধুমাত্র লাইন বাই লাইন আপনার পছন্দের ভাষায় কিভাবে লিখতে হয়, সেই অনুযায়ী লিখবেন। যদি সুডো কোড লিখে SL3 Framework এর সিস্টেম মেনে প্রোগ্রামিং প্রব্লেম সল্ভ করা শুরু করেন তাহলে আপনার প্রোগ্রামিং শেখার মানুষের কোনো অভাব হবে না। কারণ যে যেই ল্যাংগুয়েজেই কাজ করুক না কেন সুডোকোডে লেখা সমাধান সবার জন্যই কাজ করবে। SL3 Framework এর শুধুমাত্র ইমপ্লিমেন্টেশন পার্টটা ব্যতীত সব কিছুই সবার জন্য এক। আমি ওপরের সুডো কোডকে ৪ টি ভিন্ন ভিন্ন ভাষায় ইমপ্লিমেন্ট করে দেখাচ্ছি। চারটি ভিন্ন ল্যাংগুয়েজের কোড দেখলেই আপনি বুঝবেন শুধু মাত্র সিনট্যাক্স ব্যতীত এখানে আর কোনো ডিফারেন্স নেই। 104 | 105 |
106 | 107 | ## সি প্রোগ্রাম 108 | 109 | ```c 110 | #include 111 | 112 | int main() { 113 | int range = 10, i; 114 | int first_number = 0, second_number = 1, third_number; 115 | if (range < 0) 116 | { 117 | printf("Invalid Input"); 118 | } 119 | else if (range == 0) 120 | { 121 | printf("%d", first_number); 122 | } 123 | else if (range == 1) 124 | { 125 | printf("%d", second_number); 126 | } 127 | else 128 | { 129 | for (i=2; i<=range; i++) 130 | { 131 | third_number = first_number + second_number; 132 | first_number = second_number; 133 | second_number = third_number; 134 | } 135 | printf("%d", second_number); 136 | } 137 | return 0; 138 | } 139 | ``` 140 | 141 |
142 | 143 | ## জাভা প্রোগ্রাম 144 | 145 | ```java 146 | public class Main { 147 | public static void main(String [] args) { 148 | int range = 10; 149 | int firstNumber = 0, secondNumber = 1; 150 | if (range < 0) { 151 | System.out.println("Invalid Input"); 152 | } else if (range == 0) { 153 | System.out.println(firstNumber); 154 | } else if (range == 1) { 155 | System.out.println(secondNumber); 156 | } else { 157 | for (int i=2; i<=range; i++) { 158 | int thirdNumber = firstNumber + secondNumber; 159 | firstNumber = secondNumber; 160 | secondNumber = thirdNumber; 161 | } 162 | System.out.println(secondNumber); 163 | } 164 | } 165 | } 166 | ``` 167 | 168 |
169 | 170 | ## জাভাস্ক্রিপ্ট প্রোগ্রাম 171 | 172 | ```javascript 173 | const range = 10; 174 | let firstNumber = 0, 175 | secondNumber = 1; 176 | if (range < 0) { 177 | console.log('Invalid Input'); 178 | } else if (range == 0) { 179 | console.log(firstNumber); 180 | } else if (range == 1) { 181 | console.log(secondNumber); 182 | } else { 183 | for (let i = 2; i <= range; i++) { 184 | let thirdNumber = firstNumber + secondNumber; 185 | firstNumber = secondNumber; 186 | secondNumber = thirdNumber; 187 | } 188 | console.log(secondNumber); 189 | } 190 | ``` 191 | 192 |
193 | 194 | ## পাইথন প্রোগ্রাম 195 | 196 | ```python 197 | range = 10 198 | firstNumber, secondNumber = 0, 1 199 | if range < 0: 200 | print("Invalid Input") 201 | elif range == 0: 202 | print(firstNumber) 203 | elif range == 1: 204 | print(secondNumber) 205 | else: 206 | for i in range(2, range+1): 207 | thirdNumber = firstNumber + secondNumber 208 | firstNumber = secondNumber 209 | secondNUmber = thirdNumber 210 | print(secondNumber) 211 | ``` 212 | 213 |
214 | 215 | ওপরে আমরা চারটা ভিন্ন ভিন্ন প্রোগ্রামিং ল্যাংগুয়েজে আমাদের সুডোকোড ইমপ্লিমেন্ট করে দেখিয়েছি। আপনি একটু ভালো করে খেয়াল করলেই দেখবেন ল্যাংগুয়েজ গুলোর সিনট্যাক্স কিছুটা ভিন্ন, কিন্তু আপনি চেষ্টা করলেই সব গুলো সিনট্যাক্সই বুঝতে পারবেন। কারণ আপনি সুডোকোডটা বুঝতে পেরেছিলেন। তাহলে এখন নিশ্চয় বোঝা যাচ্ছে যে সুডো কোডে সমস্যা সমাধান করাটাই সব থেকে বড় কাজ। ইমপ্লিমেন্ট আপনি যখন খুশি যেই ল্যাংগুয়েজে খুশি করতে পারবেন। 216 | 217 | প্রব্লেম সল্ভিং এর সময় একটা বিষয় সব সময় মাথায় রাখতে হবে। সেটা হচ্ছে ইউনিট প্রোগ্রামিং করতে হবে, ইউনিট প্রব্লেম খুঁজে বের করতে হবে। নামটা নতুন নতুন লাগছে? হুম, আমার কাছেও নতুন। ইউনিট প্রব্লেম বলতে আমি বোঝাতে চাচ্ছি একটা সমস্যাকে ভেঙ্গে সব থেকে ছোট ইউনিটটা খুঁজে বের করুন। প্রব্লেম ব্রেকডাউনের সময়ও ইউনিট প্রব্লেম খুঁজে বের করতে হবে, প্রব্লেম সল্ভ এর ক্ষেত্রেও ইউনিট প্রোগ্রামিং এর মাধ্যমে ইউনিট প্রব্লেমকে সল্ভ করতে হবে। তারপরে ইন্টিগ্রেশন প্রোগ্রামিং করতে হবে। মানে সব গুলো ইউনিটকে যুক্ত করতে হবে। এই কাজটা করার জন্য আপনি ফাংশনের সাহায্য নিতে পারেন। যখন আপনি একটা সমস্যাকে সর্বনিম্ন ইউনিটে ভাগ করতে পারবেন তখন আপনার সমাধান করতে হবে অনেক ছোট একটা সমস্যা। সমস্যা যদি ছোট হয় তাহলে সমাধানও অনেক ছোট হবে। যার ফলে অনেক বড় বড় সমস্যা সমাধান করতেও আপনার ভয় লাগবে না। কারণ আলটিমেটলি যত বড় সমস্যায় হোক না কেন আপনি ছোট ছোট ইউনিটে সমস্যাকে ব্রেকডাউন করে নিয়েছেন। আপনার শুধু কাজ কিভাবে একটা সমস্যাকে সুন্দর ভাবে ব্রেকডাউন করা যায় সেটা শেখা। 218 | 219 | ওপরে যেই ছয়টা স্টেপের কথা বলা হয়েছে এইগুলো শুধুমাত্র একটা সমস্যা খুঁজে পেলে সেগুলো সমাধান করার সিস্টেম মাত্র। এর পরে আপনাকে আরও কিছু স্টেপের মধ্য দিয়ে যেতে হবে, যা আমরা শিখবো পরবর্তী ডকুমেন্টে। 220 | -------------------------------------------------------------------------------- /src/docs/program/java.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'SL3 Program - Java' 3 | --- 4 | 5 | ![SL3 Program - Java](/program-java.jpg) 6 | 7 | ## SL3 Program - Java 8 | 9 | ছয় মাসের এই অনলাইন লাইভ কোর্সে আপনাকে প্রোগ্রামিং ফান্ডামেন্টালস, প্রব্লেম সল্ভিং শেখানোর সাথে সাথে জাভার অ্যাডভান্সড সমস্ত বিষয়ে এক্সপার্ট বানানোর চেষ্টা করা হবে। এবং আমরা আশাবাদী যদি আপনি কোর্সটা সফল ভাবে সম্পন্ন করতে পারেন তাহলে তাহলে কোনো প্রোগ্রামিং ল্যাংগুয়েজ নিয়েই আপনার আর ভয় থাকবে না। জাভা ব্যবহার করে আপনি ফ্লুয়েন্টলি কোড লিখতে পারবেন। 10 | 11 |
12 | 13 | ## কোর্স কারিকুলাম 14 | 15 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 16 | 17 |
18 | 19 | ## আমাদের এই প্রোগ্রামের মূল লক্ষ্য হচ্ছে - 20 | 21 | - প্রোগ্রামিং মাইন্ডসেট তৈরি করা 22 | - প্রথম থেকেই ডেটা কেন্দ্রিক চিন্তা করা 23 | - প্রব্লেম খুঁজে বের করতে শেখা 24 | - একটা প্রব্লেমকে ছোট ছোট অংশে ভাঙ্গতে শেখা 25 | - প্রব্লেম সল্ভিং এবং কম্পিটিটিভ প্রোগ্রামিং 26 | - ডকুমেন্টেশনের ভয় দূর করা 27 | - প্রোগ্রামিং ল্যাংগুয়েজের ভয় দূর করা 28 | - প্রোগ্রামিং ল্যাংগুয়েজের ওপরে ডিপেন্ডেন্সি দূর করা 29 | 30 | এই প্রোগ্রাম শেষে, যদি আপনি প্রোগ্রামের বিষয়বস্তু আয়ত্ত করতে পারেন তাহলে যে কোনো ল্যাংগুয়েজে শিফট করাটা আপনার কাছে কোনো ব্যাপারই হবে না। সহজ ভাবে বললে প্রোগ্রামিং ল্যাংগুয়েজ কেন্দ্রিক যেই চিন্তা ভাবনা সেটাই আপনার থাকবে না। প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ এর ভিতরকার পার্থক্যটা চোখে আঙ্গুল দিয়ে দেখিয়ে দেওয়া হবে। যদিও আমরা বলছি যে এটা ল্যাংগুয়েজ লার্নিং প্রোগ্রাম, কিন্তু বাস্তবিক অর্থে এটা একটা প্রোগ্রামিং লার্নিং প্রোগ্রাম যেখানে টুল বা ল্যাংগুয়েজ হিসেবে আপনি আপনার পছন্দের ল্যাংগুয়েজ ([জাভা](/program/java), [জাভাস্ক্রিপ্ট](/program/javascript), [পাইথন](/program/python)) বেছে নিতে পারবেন। 31 | 32 |
33 | 34 | ## এই প্রোগ্রামে যে যে বিষয় থাকছে - 35 | 36 | - অনলাইন লাইভ ক্লাস (প্রতি সপ্তাহে দুইটা বা তার অধিক ক্লাস) 37 | - নূন্যতম 24 টা লাইভ সেশন (প্রয়োজন বোধে 50 টাও হতে পারে) 38 | - লাইভ সেশনের রেকর্ডেড ভিডিও 39 | - সিক্রেট সাপোর্ট গ্রুপ 40 | - 24/7 ডেডিকেটেড মেন্টর 41 | - কোডিং চ্যালেঞ্জেস 42 | - ইন্ডিভিজুয়াল এবং গ্রুপ অ্যাসাইনমেন্ট 43 | - প্রব্লেম সল্ভিং 44 | - কম্পিটিটিভ প্রোগ্রামিং 45 | - প্রাইভেট প্রোগ্রামিং কন্টেস্ট 46 | - প্রয়োজনীয় সমস্ত রিসোর্স 47 | - ক্যারিয়ার প্লানিং এবং কনসালটেন্সি 48 | 49 |
50 | 51 | ## প্রোগ্রামটি যেভাবে সম্পন্ন হবে - 52 | 53 | এখানে গদ বাধা নিয়মে টানা ক্লাসের পর ক্লাস নেওয়া হবে না। একটা নির্দিষ্ট টপিক্স বোঝানোর জন্য যে কয়টা ক্লাস দরকার সেই কয়টা ক্লাস পর পর হয়ে থেমে যাবে এবং আপনাদেরকে বিউল্ড হওয়ার সময় দেওয়া হবে। বিষয়টা এরকম যে একতলার ছাদ ঢালাই দেওয়ার পরে ঢালাইটা শোকানোর জন্য কিছুটা সময় দেওয়া হবে। এক তলার ছাদ ভালো ভাবে শুকালে তবেই দ্বিতীয় তলার ছাদ নিয়ে কাজ শুরু হবে। এখানে প্রচুর লাইভ সেশন হবে, সাথে গ্রুপে রেকর্ডেড ভিডিও শেয়ার হবে। শুধু ভিডিও না, প্রয়োজনীয় যা রিসোর্স দরকার সব কিছুই শেয়ার হবে। আমাদের টার্গেট ৬ মাসের ভিতরেই প্রোগ্রামটা শেষ করা, তবে অনেক কিছুর ভিত্তিতে সময়টা একটু বৃদ্ধি পেতে পারে। 54 | এই প্রোগ্রামে ইনিশিয়াল ভাবে আমরা তিনটা ল্যাংগুয়েজ নিয়ে শুরু করছি। পরবর্তীতে ল্যাংগুয়েজ সংখ্যা আরও বৃদ্ধি পাবে। তিনটা ল্যাংগুয়েজ হল জাভা, জাভাস্ক্রিপ্ট এবং পাইথন। প্রতিটা ল্যাংগুয়েজ এর জন্য আলাদা আলাদা ব্যাচ থাকবে এবং প্রতিটা ব্যাচেই সিট সংখ্যা নির্ধারিত। ল্যাংগুয়েজ এর ভিতরে কি কি শেখানো হবে এই প্রশ্ন এই প্রোগ্রামের জন্য অবাঞ্ছিত, কারণ এটা প্রোগ্রামিং এবং ল্যাংগুয়েজ লার্নিং প্রোগ্রাম। একটা ল্যাংগুয়েজ ব্যবহার করে একজন প্রোগ্রামারের মতো দক্ষতা অর্জন করায় এই প্রোগ্রামের লক্ষ্য ও উদ্দেশ্য। তাই এখানে একজন প্রোগ্রামার হওয়ার জন্য যা যা দরকার তার সবই শেখানো হবে। অবশ্যই আমরা বলতে পারি না যে আমরা শতভাগ ল্যাংগুয়েজ আপনাকে শিখিয়ে দেব কিন্তু বাস্তব জীবনের সমস্যা সমাধান করার জন্য যা যা প্রয়োজন সবই এই প্রোগ্রামে কভার করা হবে। শেখা না শেখা পুরোটাই আপনার ব্যক্তিগত অভিপ্রায়। এই প্রোগ্রামে আপনি যেই ল্যাংগুয়েজ এই জয়েন করেন না কেন, প্রোগ্রাম শেষে আপনাকে 7-10 দিনের ভিতরে অন্য আর একটা ল্যাংগুয়েজ শিখতে হবে। এটা এই প্রোগ্রামের অন্যতম একটা গোল। 55 | 56 |
57 | 58 | ## রেজিস্ট্রেশন ফি - 59 | 60 | আপনি যদি আমাদের SL3 Program এর লার্নিং মেথড দেখে নিজে নিজেই শিখতে চান তাহলে নিচের লিংকে ভিসিট করে গাইডটা ভালো মতো পড়ুন। আর যদি আপনি আমাদের গাইডেন্স এক্সপেক্ট করেন তাহলে এত গুলো সার্ভিস প্রোভাইড করার জন্য অবশ্যই আপনাদের পকেট থেকে কিছু অর্থ ব্যয় করতে হবে। আমরা 6 মাসের এই প্রোগ্রাম যেখানে আমরা 12 টা সার্ভিস প্রোভাইড করবো তার জন্য আমরা একটা নূন্যতম ফি রাখার চেষ্টা করেছি। SL3 Program এর ফি হচ্ছে 15000 টাকা। 10 সেপ্টেম্বর রাত 12 টার ভিতরে যারা জয়েন করবেন তাদের জন্য 25% ছাড়ে ফি হচ্ছে 11250 টাকা। যারা আমাদের কোনো না কোনো বুটক্যাম্পে রেজিস্ট্রেশন করেছেন তারা যে কোনো একটা ল্যাংগুয়েজের জন্য SL3 Program এ সম্পূর্ণ ফ্রি জয়েন করতে পারবেন। SL3 Program এর ফি ইন্সটলমেন্টে দেওয়ার কোনো সুযোগ নেই, আপনাকে সম্পূর্ণ কোর্স ফি টায় একবারে ব্যাংকের মাধ্যমে প্রোভাইড করতে হবে। এবং কোনো প্রকার কোনো রিকুয়েস্ট গ্রহণযোগ্য নয়। দয়া করে কেউ রিকুয়েস্ট করে মেসেজ করবেন না। 61 | 62 | > প্রথম ক্লাস শুরু হবে ৪ সেপ্টেম্বর তারিখ থেকে, দয়া করে চেষ্টা করবেন ৪ সেম্পটেম্বরের মধ্যেই রেজিস্ট্রেশন করে ফেলতে। যদি কোনো কারণে রেজিস্ট্রেশন করতে দেরি হয় বা ফিন্যান্সিয়াল সমস্যা থাকে তাহলে অবশ্যই আমাদের Stack Learner এর ফেসবুক পেজে মেসেজ করে জানাবেন। আমরা আমাদের সাধ্যমত চেষ্টা করবো। আর আমরা ইন্সিউর করছি যদি আপনি চেষ্টা করেন তাহলে এই একটা প্রোগ্রাম আপনার জীবন বদলে দিতে পারে। তাই পরবর্তী ব্যাচের জন্য অপেক্ষা করে সময় নষ্ট করাটা বোকামি হবে বলেই আমাদের মনে হয়। 63 | 64 |
65 | 66 | ## যেভাবে নিজের সিট বুকিং দিবেন - 67 | 68 | সিট বুকিং দেওয়া বলতে আসলে আমি রেজিস্ট্রেশনের কথায় বোঝাচ্ছি। রেজিস্ট্রেশন করতে আমাদের [Stack Learner](m.me/stacklearner) এর পেজে মেসেজ করতে পারেন। অথবা আমাদের সাথে ফোনে কথা বলতে পারেন - 01714137780 । অথবা আপনি চাইলে আমাদের অফিসে এসেও কথা বলতে পারেন। অফিসের ঠিকানা পাওয়ার জন্য গুগলে Stack Learner লিখে সার্চ করলেই আমাদের ঠিকানা বলে দিবে। (আপনি সার্চ করলে আমাদের কিওয়ার্ডের সার্চ ভলিউম একটু বাড়বে আরকি) । আর অফিসে আসার পূর্বে অবশ্যই আমাদের সাথে কন্ট্যাক্ট করেই আসবেন। 69 | 70 | > আমরা খুবই নবীন একটা স্টার্টাপ, ফিন্যান্সিয়াল সাপোর্ট দেওয়ার মতো অবস্থায় আমরা এখনো আসতে পারিনি। আপনাদের দোয়া এবং সাপোর্ট থাকলে অবশ্যই একদিন এই জায়গায় পৌঁছাতে পারবো। তারপরেও যদি কারোর সত্যিকার অর্থেই সাপোর্টের দরকার হয়, আমাদের [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্টে (support@stacklearner.com) ইমেইল করতে পারেন। আমরা আমাদের সর্বোচ্চ সাপোর্ট দেওয়ার চেষ্টা করবো। 71 | 72 |
73 | 74 | ## প্রতিটা ল্যাংগুয়েজ সম্পর্কে জানতে লিচের লিংকে ক্লিক করুন - 75 | 76 | - [Java](/program/java) 77 | - [Python](/program/python) 78 | - [Javascript](/program/javascript) 79 | -------------------------------------------------------------------------------- /src/docs/program/javascript.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'SL3 Program - JavaScript' 3 | --- 4 | 5 | ![SL3 Program - JavaScript](/program-js.jpg) 6 | 7 | ## SL3 Program - JavaScript 8 | 9 | ছয় মাসের এই অনলাইন লাইভ কোর্সে আপনাকে প্রোগ্রামিং ফান্ডামেন্টালস, প্রব্লেম সল্ভিং শেখানোর সাথে সাথে জাভাস্ক্রিপ্টের অ্যাডভান্সড সমস্ত বিষয়ে এক্সপার্ট বানানোর চেষ্টা করা হবে। এবং আমরা আশাবাদী যদি আপনি কোর্সটা সফল ভাবে সম্পন্ন করতে পারেন তাহলে তাহলে কোনো প্রোগ্রামিং ল্যাংগুয়েজ নিয়েই আপনার আর ভয় থাকবে না। জাভাস্ক্রিপ্ট ব্যবহার করে আপনি ফ্লুয়েন্টলি কোড লিখতে পারবেন। 10 | 11 |
12 | 13 | ## কোর্স কারিকুলাম 14 | 15 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 16 | 17 |
18 | 19 | ## আমাদের এই প্রোগ্রামের মূল লক্ষ্য হচ্ছে - 20 | 21 | - প্রোগ্রামিং মাইন্ডসেট তৈরি করা 22 | - প্রথম থেকেই ডেটা কেন্দ্রিক চিন্তা করা 23 | - প্রব্লেম খুঁজে বের করতে শেখা 24 | - একটা প্রব্লেমকে ছোট ছোট অংশে ভাঙ্গতে শেখা 25 | - প্রব্লেম সল্ভিং এবং কম্পিটিটিভ প্রোগ্রামিং 26 | - ডকুমেন্টেশনের ভয় দূর করা 27 | - প্রোগ্রামিং ল্যাংগুয়েজের ভয় দূর করা 28 | - প্রোগ্রামিং ল্যাংগুয়েজের ওপরে ডিপেন্ডেন্সি দূর করা 29 | 30 | এই প্রোগ্রাম শেষে, যদি আপনি প্রোগ্রামের বিষয়বস্তু আয়ত্ত করতে পারেন তাহলে যে কোনো ল্যাংগুয়েজে শিফট করাটা আপনার কাছে কোনো ব্যাপারই হবে না। সহজ ভাবে বললে প্রোগ্রামিং ল্যাংগুয়েজ কেন্দ্রিক যেই চিন্তা ভাবনা সেটাই আপনার থাকবে না। প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ এর ভিতরকার পার্থক্যটা চোখে আঙ্গুল দিয়ে দেখিয়ে দেওয়া হবে। যদিও আমরা বলছি যে এটা ল্যাংগুয়েজ লার্নিং প্রোগ্রাম, কিন্তু বাস্তবিক অর্থে এটা একটা প্রোগ্রামিং লার্নিং প্রোগ্রাম যেখানে টুল বা ল্যাংগুয়েজ হিসেবে আপনি আপনার পছন্দের ল্যাংগুয়েজ ([জাভা](/program/java), [জাভাস্ক্রিপ্ট](/program/javascript), [পাইথন](/program/python)) বেছে নিতে পারবেন। 31 | 32 |
33 | 34 | ## এই প্রোগ্রামে যে যে বিষয় থাকছে - 35 | 36 | - অনলাইন লাইভ ক্লাস (প্রতি সপ্তাহে দুইটা বা তার অধিক ক্লাস) 37 | - নূন্যতম 24 টা লাইভ সেশন (প্রয়োজন বোধে 50 টাও হতে পারে) 38 | - লাইভ সেশনের রেকর্ডেড ভিডিও 39 | - সিক্রেট সাপোর্ট গ্রুপ 40 | - 24/7 ডেডিকেটেড মেন্টর 41 | - কোডিং চ্যালেঞ্জেস 42 | - ইন্ডিভিজুয়াল এবং গ্রুপ অ্যাসাইনমেন্ট 43 | - প্রব্লেম সল্ভিং 44 | - কম্পিটিটিভ প্রোগ্রামিং 45 | - প্রাইভেট প্রোগ্রামিং কন্টেস্ট 46 | - প্রয়োজনীয় সমস্ত রিসোর্স 47 | - ক্যারিয়ার প্লানিং এবং কনসালটেন্সি 48 | 49 |
50 | 51 | ## প্রোগ্রামটি যেভাবে সম্পন্ন হবে - 52 | 53 | এখানে গদ বাধা নিয়মে টানা ক্লাসের পর ক্লাস নেওয়া হবে না। একটা নির্দিষ্ট টপিক্স বোঝানোর জন্য যে কয়টা ক্লাস দরকার সেই কয়টা ক্লাস পর পর হয়ে থেমে যাবে এবং আপনাদেরকে বিউল্ড হওয়ার সময় দেওয়া হবে। বিষয়টা এরকম যে একতলার ছাদ ঢালাই দেওয়ার পরে ঢালাইটা শোকানোর জন্য কিছুটা সময় দেওয়া হবে। এক তলার ছাদ ভালো ভাবে শুকালে তবেই দ্বিতীয় তলার ছাদ নিয়ে কাজ শুরু হবে। এখানে প্রচুর লাইভ সেশন হবে, সাথে গ্রুপে রেকর্ডেড ভিডিও শেয়ার হবে। শুধু ভিডিও না, প্রয়োজনীয় যা রিসোর্স দরকার সব কিছুই শেয়ার হবে। আমাদের টার্গেট ৬ মাসের ভিতরেই প্রোগ্রামটা শেষ করা, তবে অনেক কিছুর ভিত্তিতে সময়টা একটু বৃদ্ধি পেতে পারে। 54 | এই প্রোগ্রামে ইনিশিয়াল ভাবে আমরা তিনটা ল্যাংগুয়েজ নিয়ে শুরু করছি। পরবর্তীতে ল্যাংগুয়েজ সংখ্যা আরও বৃদ্ধি পাবে। তিনটা ল্যাংগুয়েজ হল জাভা, জাভাস্ক্রিপ্ট এবং পাইথন। প্রতিটা ল্যাংগুয়েজ এর জন্য আলাদা আলাদা ব্যাচ থাকবে এবং প্রতিটা ব্যাচেই সিট সংখ্যা নির্ধারিত। ল্যাংগুয়েজ এর ভিতরে কি কি শেখানো হবে এই প্রশ্ন এই প্রোগ্রামের জন্য অবাঞ্ছিত, কারণ এটা প্রোগ্রামিং এবং ল্যাংগুয়েজ লার্নিং প্রোগ্রাম। একটা ল্যাংগুয়েজ ব্যবহার করে একজন প্রোগ্রামারের মতো দক্ষতা অর্জন করায় এই প্রোগ্রামের লক্ষ্য ও উদ্দেশ্য। তাই এখানে একজন প্রোগ্রামার হওয়ার জন্য যা যা দরকার তার সবই শেখানো হবে। অবশ্যই আমরা বলতে পারি না যে আমরা শতভাগ ল্যাংগুয়েজ আপনাকে শিখিয়ে দেব কিন্তু বাস্তব জীবনের সমস্যা সমাধান করার জন্য যা যা প্রয়োজন সবই এই প্রোগ্রামে কভার করা হবে। শেখা না শেখা পুরোটাই আপনার ব্যক্তিগত অভিপ্রায়। এই প্রোগ্রামে আপনি যেই ল্যাংগুয়েজ এই জয়েন করেন না কেন, প্রোগ্রাম শেষে আপনাকে 7-10 দিনের ভিতরে অন্য আর একটা ল্যাংগুয়েজ শিখতে হবে। এটা এই প্রোগ্রামের অন্যতম একটা গোল। 55 | 56 |
57 | 58 | ## রেজিস্ট্রেশন ফি - 59 | 60 | আপনি যদি আমাদের SL3 Program এর লার্নিং মেথড দেখে নিজে নিজেই শিখতে চান তাহলে নিচের লিংকে ভিসিট করে গাইডটা ভালো মতো পড়ুন। আর যদি আপনি আমাদের গাইডেন্স এক্সপেক্ট করেন তাহলে এত গুলো সার্ভিস প্রোভাইড করার জন্য অবশ্যই আপনাদের পকেট থেকে কিছু অর্থ ব্যয় করতে হবে। আমরা 6 মাসের এই প্রোগ্রাম যেখানে আমরা 12 টা সার্ভিস প্রোভাইড করবো তার জন্য আমরা একটা নূন্যতম ফি রাখার চেষ্টা করেছি। SL3 Program এর ফি হচ্ছে 15000 টাকা। 10 সেপ্টেম্বর রাত 12 টার ভিতরে যারা জয়েন করবেন তাদের জন্য 25% ছাড়ে ফি হচ্ছে 11250 টাকা। যারা আমাদের কোনো না কোনো বুটক্যাম্পে রেজিস্ট্রেশন করেছেন তারা যে কোনো একটা ল্যাংগুয়েজের জন্য SL3 Program এ সম্পূর্ণ ফ্রি জয়েন করতে পারবেন। SL3 Program এর ফি ইন্সটলমেন্টে দেওয়ার কোনো সুযোগ নেই, আপনাকে সম্পূর্ণ কোর্স ফি টায় একবারে ব্যাংকের মাধ্যমে প্রোভাইড করতে হবে। এবং কোনো প্রকার কোনো রিকুয়েস্ট গ্রহণযোগ্য নয়। দয়া করে কেউ রিকুয়েস্ট করে মেসেজ করবেন না। 61 | 62 | > প্রথম ক্লাস শুরু হবে ৪ সেপ্টেম্বর তারিখ থেকে, দয়া করে চেষ্টা করবেন ৪ সেম্পটেম্বরের মধ্যেই রেজিস্ট্রেশন করে ফেলতে। যদি কোনো কারণে রেজিস্ট্রেশন করতে দেরি হয় বা ফিন্যান্সিয়াল সমস্যা থাকে তাহলে অবশ্যই আমাদের Stack Learner এর ফেসবুক পেজে মেসেজ করে জানাবেন। আমরা আমাদের সাধ্যমত চেষ্টা করবো। আর আমরা ইন্সিউর করছি যদি আপনি চেষ্টা করেন তাহলে এই একটা প্রোগ্রাম আপনার জীবন বদলে দিতে পারে। তাই পরবর্তী ব্যাচের জন্য অপেক্ষা করে সময় নষ্ট করাটা বোকামি হবে বলেই আমাদের মনে হয়। 63 | 64 |
65 | 66 | ## যেভাবে নিজের সিট বুকিং দিবেন - 67 | 68 | সিট বুকিং দেওয়া বলতে আসলে আমি রেজিস্ট্রেশনের কথায় বোঝাচ্ছি। রেজিস্ট্রেশন করতে আমাদের [Stack Learner](m.me/stacklearner) এর পেজে মেসেজ করতে পারেন। অথবা আমাদের সাথে ফোনে কথা বলতে পারেন - 01714137780 । অথবা আপনি চাইলে আমাদের অফিসে এসেও কথা বলতে পারেন। অফিসের ঠিকানা পাওয়ার জন্য গুগলে Stack Learner লিখে সার্চ করলেই আমাদের ঠিকানা বলে দিবে। (আপনি সার্চ করলে আমাদের কিওয়ার্ডের সার্চ ভলিউম একটু বাড়বে আরকি) । আর অফিসে আসার পূর্বে অবশ্যই আমাদের সাথে কন্ট্যাক্ট করেই আসবেন। 69 | 70 | > আমরা খুবই নবীন একটা স্টার্টাপ, ফিন্যান্সিয়াল সাপোর্ট দেওয়ার মতো অবস্থায় আমরা এখনো আসতে পারিনি। আপনাদের দোয়া এবং সাপোর্ট থাকলে অবশ্যই একদিন এই জায়গায় পৌঁছাতে পারবো। তারপরেও যদি কারোর সত্যিকার অর্থেই সাপোর্টের দরকার হয়, আমাদের [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্টে (support@stacklearner.com) ইমেইল করতে পারেন। আমরা আমাদের সর্বোচ্চ সাপোর্ট দেওয়ার চেষ্টা করবো। 71 | 72 |
73 | 74 | ## প্রতিটা ল্যাংগুয়েজ সম্পর্কে জানতে লিচের লিংকে ক্লিক করুন - 75 | 76 | - [Java](/program/java) 77 | - [Python](/program/python) 78 | - [Javascript](/program/javascript) 79 | -------------------------------------------------------------------------------- /src/docs/program/python.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'SL3 Program - Python' 3 | --- 4 | 5 | ![SL3 Program - Python](/program-python.jpg) 6 | 7 | ## SL3 Program - Python 8 | 9 | ছয় মাসের এই অনলাইন লাইভ কোর্সে আপনাকে প্রোগ্রামিং ফান্ডামেন্টালস, প্রব্লেম সল্ভিং শেখানোর সাথে সাথে পাইথনের অ্যাডভান্সড সমস্ত বিষয়ে এক্সপার্ট বানানোর চেষ্টা করা হবে। এবং আমরা আশাবাদী যদি আপনি কোর্সটা সফল ভাবে সম্পন্ন করতে পারেন তাহলে তাহলে কোনো প্রোগ্রামিং ল্যাংগুয়েজ নিয়েই আপনার আর ভয় থাকবে না। পাইথন ব্যবহার করে আপনি ফ্লুয়েন্টলি কোড লিখতে পারবেন। 10 | 11 |
12 | 13 | ## কোর্স কারিকুলাম 14 | 15 | > আমরা দুঃখিত, এই মুহুর্তে কোর্স কারিকুলাম দেখাতে না পারার জন্য। আমরা দুই একদিনের ভিতরেই কোর্সের ফাইনাল কারিকুলাম পাবলিশ করবো বলেই আশা করছি। 16 | 17 |
18 | 19 | ## আমাদের এই প্রোগ্রামের মূল লক্ষ্য হচ্ছে - 20 | 21 | - প্রোগ্রামিং মাইন্ডসেট তৈরি করা 22 | - প্রথম থেকেই ডেটা কেন্দ্রিক চিন্তা করা 23 | - প্রব্লেম খুঁজে বের করতে শেখা 24 | - একটা প্রব্লেমকে ছোট ছোট অংশে ভাঙ্গতে শেখা 25 | - প্রব্লেম সল্ভিং এবং কম্পিটিটিভ প্রোগ্রামিং 26 | - ডকুমেন্টেশনের ভয় দূর করা 27 | - প্রোগ্রামিং ল্যাংগুয়েজের ভয় দূর করা 28 | - প্রোগ্রামিং ল্যাংগুয়েজের ওপরে ডিপেন্ডেন্সি দূর করা 29 | 30 | এই প্রোগ্রাম শেষে, যদি আপনি প্রোগ্রামের বিষয়বস্তু আয়ত্ত করতে পারেন তাহলে যে কোনো ল্যাংগুয়েজে শিফট করাটা আপনার কাছে কোনো ব্যাপারই হবে না। সহজ ভাবে বললে প্রোগ্রামিং ল্যাংগুয়েজ কেন্দ্রিক যেই চিন্তা ভাবনা সেটাই আপনার থাকবে না। প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ এর ভিতরকার পার্থক্যটা চোখে আঙ্গুল দিয়ে দেখিয়ে দেওয়া হবে। যদিও আমরা বলছি যে এটা ল্যাংগুয়েজ লার্নিং প্রোগ্রাম, কিন্তু বাস্তবিক অর্থে এটা একটা প্রোগ্রামিং লার্নিং প্রোগ্রাম যেখানে টুল বা ল্যাংগুয়েজ হিসেবে আপনি আপনার পছন্দের ল্যাংগুয়েজ ([জাভা](/program/java), [জাভাস্ক্রিপ্ট](/program/javascript), [পাইথন](/program/python)) বেছে নিতে পারবেন। 31 | 32 |
33 | 34 | ## এই প্রোগ্রামে যে যে বিষয় থাকছে - 35 | 36 | - অনলাইন লাইভ ক্লাস (প্রতি সপ্তাহে দুইটা বা তার অধিক ক্লাস) 37 | - নূন্যতম 24 টা লাইভ সেশন (প্রয়োজন বোধে 50 টাও হতে পারে) 38 | - লাইভ সেশনের রেকর্ডেড ভিডিও 39 | - সিক্রেট সাপোর্ট গ্রুপ 40 | - 24/7 ডেডিকেটেড মেন্টর 41 | - কোডিং চ্যালেঞ্জেস 42 | - ইন্ডিভিজুয়াল এবং গ্রুপ অ্যাসাইনমেন্ট 43 | - প্রব্লেম সল্ভিং 44 | - কম্পিটিটিভ প্রোগ্রামিং 45 | - প্রাইভেট প্রোগ্রামিং কন্টেস্ট 46 | - প্রয়োজনীয় সমস্ত রিসোর্স 47 | - ক্যারিয়ার প্লানিং এবং কনসালটেন্সি 48 | 49 |
50 | 51 | ## প্রোগ্রামটি যেভাবে সম্পন্ন হবে - 52 | 53 | এখানে গদ বাধা নিয়মে টানা ক্লাসের পর ক্লাস নেওয়া হবে না। একটা নির্দিষ্ট টপিক্স বোঝানোর জন্য যে কয়টা ক্লাস দরকার সেই কয়টা ক্লাস পর পর হয়ে থেমে যাবে এবং আপনাদেরকে বিউল্ড হওয়ার সময় দেওয়া হবে। বিষয়টা এরকম যে একতলার ছাদ ঢালাই দেওয়ার পরে ঢালাইটা শোকানোর জন্য কিছুটা সময় দেওয়া হবে। এক তলার ছাদ ভালো ভাবে শুকালে তবেই দ্বিতীয় তলার ছাদ নিয়ে কাজ শুরু হবে। এখানে প্রচুর লাইভ সেশন হবে, সাথে গ্রুপে রেকর্ডেড ভিডিও শেয়ার হবে। শুধু ভিডিও না, প্রয়োজনীয় যা রিসোর্স দরকার সব কিছুই শেয়ার হবে। আমাদের টার্গেট ৬ মাসের ভিতরেই প্রোগ্রামটা শেষ করা, তবে অনেক কিছুর ভিত্তিতে সময়টা একটু বৃদ্ধি পেতে পারে। 54 | এই প্রোগ্রামে ইনিশিয়াল ভাবে আমরা তিনটা ল্যাংগুয়েজ নিয়ে শুরু করছি। পরবর্তীতে ল্যাংগুয়েজ সংখ্যা আরও বৃদ্ধি পাবে। তিনটা ল্যাংগুয়েজ হল জাভা, জাভাস্ক্রিপ্ট এবং পাইথন। প্রতিটা ল্যাংগুয়েজ এর জন্য আলাদা আলাদা ব্যাচ থাকবে এবং প্রতিটা ব্যাচেই সিট সংখ্যা নির্ধারিত। ল্যাংগুয়েজ এর ভিতরে কি কি শেখানো হবে এই প্রশ্ন এই প্রোগ্রামের জন্য অবাঞ্ছিত, কারণ এটা প্রোগ্রামিং এবং ল্যাংগুয়েজ লার্নিং প্রোগ্রাম। একটা ল্যাংগুয়েজ ব্যবহার করে একজন প্রোগ্রামারের মতো দক্ষতা অর্জন করায় এই প্রোগ্রামের লক্ষ্য ও উদ্দেশ্য। তাই এখানে একজন প্রোগ্রামার হওয়ার জন্য যা যা দরকার তার সবই শেখানো হবে। অবশ্যই আমরা বলতে পারি না যে আমরা শতভাগ ল্যাংগুয়েজ আপনাকে শিখিয়ে দেব কিন্তু বাস্তব জীবনের সমস্যা সমাধান করার জন্য যা যা প্রয়োজন সবই এই প্রোগ্রামে কভার করা হবে। শেখা না শেখা পুরোটাই আপনার ব্যক্তিগত অভিপ্রায়। এই প্রোগ্রামে আপনি যেই ল্যাংগুয়েজ এই জয়েন করেন না কেন, প্রোগ্রাম শেষে আপনাকে 7-10 দিনের ভিতরে অন্য আর একটা ল্যাংগুয়েজ শিখতে হবে। এটা এই প্রোগ্রামের অন্যতম একটা গোল। 55 | 56 |
57 | 58 | ## রেজিস্ট্রেশন ফি - 59 | 60 | আপনি যদি আমাদের SL3 Program এর লার্নিং মেথড দেখে নিজে নিজেই শিখতে চান তাহলে নিচের লিংকে ভিসিট করে গাইডটা ভালো মতো পড়ুন। আর যদি আপনি আমাদের গাইডেন্স এক্সপেক্ট করেন তাহলে এত গুলো সার্ভিস প্রোভাইড করার জন্য অবশ্যই আপনাদের পকেট থেকে কিছু অর্থ ব্যয় করতে হবে। আমরা 6 মাসের এই প্রোগ্রাম যেখানে আমরা 12 টা সার্ভিস প্রোভাইড করবো তার জন্য আমরা একটা নূন্যতম ফি রাখার চেষ্টা করেছি। SL3 Program এর ফি হচ্ছে 15000 টাকা। 10 সেপ্টেম্বর রাত 12 টার ভিতরে যারা জয়েন করবেন তাদের জন্য 25% ছাড়ে ফি হচ্ছে 11250 টাকা। যারা আমাদের কোনো না কোনো বুটক্যাম্পে রেজিস্ট্রেশন করেছেন তারা যে কোনো একটা ল্যাংগুয়েজের জন্য SL3 Program এ সম্পূর্ণ ফ্রি জয়েন করতে পারবেন। SL3 Program এর ফি ইন্সটলমেন্টে দেওয়ার কোনো সুযোগ নেই, আপনাকে সম্পূর্ণ কোর্স ফি টায় একবারে ব্যাংকের মাধ্যমে প্রোভাইড করতে হবে। এবং কোনো প্রকার কোনো রিকুয়েস্ট গ্রহণযোগ্য নয়। দয়া করে কেউ রিকুয়েস্ট করে মেসেজ করবেন না। 61 | 62 | > প্রথম ক্লাস শুরু হবে ৪ সেপ্টেম্বর তারিখ থেকে, দয়া করে চেষ্টা করবেন ৪ সেম্পটেম্বরের মধ্যেই রেজিস্ট্রেশন করে ফেলতে। যদি কোনো কারণে রেজিস্ট্রেশন করতে দেরি হয় বা ফিন্যান্সিয়াল সমস্যা থাকে তাহলে অবশ্যই আমাদের Stack Learner এর ফেসবুক পেজে মেসেজ করে জানাবেন। আমরা আমাদের সাধ্যমত চেষ্টা করবো। আর আমরা ইন্সিউর করছি যদি আপনি চেষ্টা করেন তাহলে এই একটা প্রোগ্রাম আপনার জীবন বদলে দিতে পারে। তাই পরবর্তী ব্যাচের জন্য অপেক্ষা করে সময় নষ্ট করাটা বোকামি হবে বলেই আমাদের মনে হয়। 63 | 64 |
65 | 66 | ## যেভাবে নিজের সিট বুকিং দিবেন - 67 | 68 | সিট বুকিং দেওয়া বলতে আসলে আমি রেজিস্ট্রেশনের কথায় বোঝাচ্ছি। রেজিস্ট্রেশন করতে আমাদের [Stack Learner](m.me/stacklearner) এর পেজে মেসেজ করতে পারেন। অথবা আমাদের সাথে ফোনে কথা বলতে পারেন - 01714137780 । অথবা আপনি চাইলে আমাদের অফিসে এসেও কথা বলতে পারেন। অফিসের ঠিকানা পাওয়ার জন্য গুগলে Stack Learner লিখে সার্চ করলেই আমাদের ঠিকানা বলে দিবে। (আপনি সার্চ করলে আমাদের কিওয়ার্ডের সার্চ ভলিউম একটু বাড়বে আরকি) । আর অফিসে আসার পূর্বে অবশ্যই আমাদের সাথে কন্ট্যাক্ট করেই আসবেন। 69 | 70 | > আমরা খুবই নবীন একটা স্টার্টাপ, ফিন্যান্সিয়াল সাপোর্ট দেওয়ার মতো অবস্থায় আমরা এখনো আসতে পারিনি। আপনাদের দোয়া এবং সাপোর্ট থাকলে অবশ্যই একদিন এই জায়গায় পৌঁছাতে পারবো। তারপরেও যদি কারোর সত্যিকার অর্থেই সাপোর্টের দরকার হয়, আমাদের [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্টে (support@stacklearner.com) ইমেইল করতে পারেন। আমরা আমাদের সর্বোচ্চ সাপোর্ট দেওয়ার চেষ্টা করবো। 71 | 72 |
73 | 74 | ## প্রতিটা ল্যাংগুয়েজ সম্পর্কে জানতে লিচের লিংকে ক্লিক করুন - 75 | 76 | - [Java](/program/java) 77 | - [Python](/program/python) 78 | - [Javascript](/program/javascript) 79 | -------------------------------------------------------------------------------- /src/docs/program/what-is-sl3-program.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'What is SL3 Program' 3 | --- 4 | 5 | ## Our Guidance Our Care, You Are Going To Be A Programmer 6 | 7 | SL3 Program - প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ শেখার ৬ মাসের একটি প্রোগ্রাম যা ডিজাইন করা হয়েছে SL3 Framework এর কথা মাথায় রেখে। এই প্রোগ্রামের মূল লক্ষ্য হচ্ছে আপনাকে প্রোগ্রামার হিসেবে গড়ে তোলা। আসলে প্রোগ্রামার আপনাকেই হতে হবে, আমরা শুধু আপনাকে সঠিক গাইডলাইন প্রোভাইড করতে পারবো। এটা একটা পেইড প্রোগ্রাম যেখানে আমরা আপনাকে একটা নির্দিষ্ট ল্যাংগুয়েজের ফান্ডামেন্টাল থেকে শুরু করে মোস্ট অ্যাডভান্সড টপিক্স যেমন অবজেক্ট অরিয়েন্টেড, ফাংশনাল প্রোগ্রামিং পর্যন্ত হাতে ধরে শেখাবো। আপনাকে বিভিন্ন চ্যালেঞ্জ এর মধ্য দিয়ে প্রোগ্রামার বানানোর চেষ্টা করবো। এই প্রোগ্রাম যদি আপনি সফল ভাবে শেষ করতে পারেন তাহলে প্রোগ্রামিং, প্রব্লেম সল্ভিং বা প্রোগ্রামিং ল্যাংগুয়েজ আপনার কাছে কোনো ভীতিকর বিষয় থাকবে না, এটা আমরা গর্ব করেই বলতে পারি। 8 | 9 |
10 | 11 | ## আমাদের এই প্রোগ্রামের মূল লক্ষ্য হচ্ছে - 12 | 13 | - প্রোগ্রামিং মাইন্ডসেট তৈরি করা 14 | - প্রথম থেকেই ডেটা কেন্দ্রিক চিন্তা করা 15 | - প্রব্লেম খুঁজে বের করতে শেখা 16 | - একটা প্রব্লেমকে ছোট ছোট অংশে ভাঙ্গতে শেখা 17 | - প্রব্লেম সল্ভিং এবং কম্পিটিটিভ প্রোগ্রামিং 18 | - ডকুমেন্টেশনের ভয় দূর করা 19 | - প্রোগ্রামিং ল্যাংগুয়েজের ভয় দূর করা 20 | - প্রোগ্রামিং ল্যাংগুয়েজের ওপরে ডিপেন্ডেন্সি দূর করা 21 | 22 | এই প্রোগ্রাম শেষে, যদি আপনি প্রোগ্রামের বিষয়বস্তু আয়ত্ত করতে পারেন তাহলে যে কোনো ল্যাংগুয়েজে শিফট করাটা আপনার কাছে কোনো ব্যাপারই হবে না। সহজ ভাবে বললে প্রোগ্রামিং ল্যাংগুয়েজ কেন্দ্রিক যেই চিন্তা ভাবনা সেটাই আপনার থাকবে না। প্রোগ্রামিং এবং প্রোগ্রামিং ল্যাংগুয়েজ এর ভিতরকার পার্থক্যটা চোখে আঙ্গুল দিয়ে দেখিয়ে দেওয়া হবে। যদিও আমরা বলছি যে এটা ল্যাংগুয়েজ লার্নিং প্রোগ্রাম, কিন্তু বাস্তবিক অর্থে এটা একটা প্রোগ্রামিং লার্নিং প্রোগ্রাম যেখানে টুল বা ল্যাংগুয়েজ হিসেবে আপনি আপনার পছন্দের ল্যাংগুয়েজ ([জাভা](/program/java), [জাভাস্ক্রিপ্ট](/program/javascript), [পাইথন](/program/python)) বেছে নিতে পারবেন। 23 | 24 |
25 | 26 | ## এই প্রোগ্রামে যে যে বিষয় থাকছে - 27 | 28 | - অনলাইন লাইভ ক্লাস (প্রতি সপ্তাহে দুইটা বা তার অধিক ক্লাস) 29 | - নূন্যতম 24 টা লাইভ সেশন (প্রয়োজন বোধে 50 টাও হতে পারে) 30 | - লাইভ সেশনের রেকর্ডেড ভিডিও 31 | - সিক্রেট সাপোর্ট গ্রুপ 32 | - 24/7 ডেডিকেটেড মেন্টর 33 | - কোডিং চ্যালেঞ্জেস 34 | - ইন্ডিভিজুয়াল এবং গ্রুপ অ্যাসাইনমেন্ট 35 | - প্রব্লেম সল্ভিং 36 | - কম্পিটিটিভ প্রোগ্রামিং 37 | - প্রাইভেট প্রোগ্রামিং কন্টেস্ট 38 | - প্রয়োজনীয় সমস্ত রিসোর্স 39 | - ক্যারিয়ার প্লানিং এবং কনসালটেন্সি 40 | 41 |
42 | 43 | ## প্রোগ্রামটি যেভাবে সম্পন্ন হবে - 44 | 45 | এখানে গদ বাধা নিয়মে টানা ক্লাসের পর ক্লাস নেওয়া হবে না। একটা নির্দিষ্ট টপিক্স বোঝানোর জন্য যে কয়টা ক্লাস দরকার সেই কয়টা ক্লাস পর পর হয়ে থেমে যাবে এবং আপনাদেরকে বিউল্ড হওয়ার সময় দেওয়া হবে। বিষয়টা এরকম যে একতলার ছাদ ঢালাই দেওয়ার পরে ঢালাইটা শোকানোর জন্য কিছুটা সময় দেওয়া হবে। এক তলার ছাদ ভালো ভাবে শুকালে তবেই দ্বিতীয় তলার ছাদ নিয়ে কাজ শুরু হবে। এখানে প্রচুর লাইভ সেশন হবে, সাথে গ্রুপে রেকর্ডেড ভিডিও শেয়ার হবে। শুধু ভিডিও না, প্রয়োজনীয় যা রিসোর্স দরকার সব কিছুই শেয়ার হবে। আমাদের টার্গেট ৬ মাসের ভিতরেই প্রোগ্রামটা শেষ করা, তবে অনেক কিছুর ভিত্তিতে সময়টা একটু বৃদ্ধি পেতে পারে। 46 | এই প্রোগ্রামে ইনিশিয়াল ভাবে আমরা তিনটা ল্যাংগুয়েজ নিয়ে শুরু করছি। পরবর্তীতে ল্যাংগুয়েজ সংখ্যা আরও বৃদ্ধি পাবে। তিনটা ল্যাংগুয়েজ হল জাভা, জাভাস্ক্রিপ্ট এবং পাইথন। প্রতিটা ল্যাংগুয়েজ এর জন্য আলাদা আলাদা ব্যাচ থাকবে এবং প্রতিটা ব্যাচেই সিট সংখ্যা নির্ধারিত। ল্যাংগুয়েজ এর ভিতরে কি কি শেখানো হবে এই প্রশ্ন এই প্রোগ্রামের জন্য অবাঞ্ছিত, কারণ এটা প্রোগ্রামিং এবং ল্যাংগুয়েজ লার্নিং প্রোগ্রাম। একটা ল্যাংগুয়েজ ব্যবহার করে একজন প্রোগ্রামারের মতো দক্ষতা অর্জন করায় এই প্রোগ্রামের লক্ষ্য ও উদ্দেশ্য। তাই এখানে একজন প্রোগ্রামার হওয়ার জন্য যা যা দরকার তার সবই শেখানো হবে। অবশ্যই আমরা বলতে পারি না যে আমরা শতভাগ ল্যাংগুয়েজ আপনাকে শিখিয়ে দেব কিন্তু বাস্তব জীবনের সমস্যা সমাধান করার জন্য যা যা প্রয়োজন সবই এই প্রোগ্রামে কভার করা হবে। শেখা না শেখা পুরোটাই আপনার ব্যক্তিগত অভিপ্রায়। এই প্রোগ্রামে আপনি যেই ল্যাংগুয়েজ এই জয়েন করেন না কেন, প্রোগ্রাম শেষে আপনাকে 7-10 দিনের ভিতরে অন্য আর একটা ল্যাংগুয়েজ শিখতে হবে। এটা এই প্রোগ্রামের অন্যতম একটা গোল। 47 | 48 |
49 | 50 | ## রেজিস্ট্রেশন ফি - 51 | 52 | আপনি যদি আমাদের SL3 Program এর লার্নিং মেথড দেখে নিজে নিজেই শিখতে চান তাহলে নিচের লিংকে ভিসিট করে গাইডটা ভালো মতো পড়ুন। আর যদি আপনি আমাদের গাইডেন্স এক্সপেক্ট করেন তাহলে এত গুলো সার্ভিস প্রোভাইড করার জন্য অবশ্যই আপনাদের পকেট থেকে কিছু অর্থ ব্যয় করতে হবে। আমরা 6 মাসের এই প্রোগ্রাম যেখানে আমরা 12 টা সার্ভিস প্রোভাইড করবো তার জন্য আমরা একটা নূন্যতম ফি রাখার চেষ্টা করেছি। SL3 Program এর ফি হচ্ছে 15000 টাকা। 10 সেপ্টেম্বর রাত 12 টার ভিতরে যারা জয়েন করবেন তাদের জন্য 25% ছাড়ে ফি হচ্ছে 11250 টাকা। যারা আমাদের কোনো না কোনো বুটক্যাম্পে রেজিস্ট্রেশন করেছেন তারা যে কোনো একটা ল্যাংগুয়েজের জন্য SL3 Program এ সম্পূর্ণ ফ্রি জয়েন করতে পারবেন। SL3 Program এর ফি ইন্সটলমেন্টে দেওয়ার কোনো সুযোগ নেই, আপনাকে সম্পূর্ণ কোর্স ফি টায় একবারে ব্যাংকের মাধ্যমে প্রোভাইড করতে হবে। এবং কোনো প্রকার কোনো রিকুয়েস্ট গ্রহণযোগ্য নয়। দয়া করে কেউ রিকুয়েস্ট করে মেসেজ করবেন না। 53 | 54 | > প্রথম ক্লাস শুরু হবে ৪ সেপ্টেম্বর তারিখ থেকে, দয়া করে চেষ্টা করবেন ৪ সেম্পটেম্বরের মধ্যেই রেজিস্ট্রেশন করে ফেলতে। যদি কোনো কারণে রেজিস্ট্রেশন করতে দেরি হয় বা ফিন্যান্সিয়াল সমস্যা থাকে তাহলে অবশ্যই আমাদের Stack Learner এর ফেসবুক পেজে মেসেজ করে জানাবেন। আমরা আমাদের সাধ্যমত চেষ্টা করবো। আর আমরা ইন্সিউর করছি যদি আপনি চেষ্টা করেন তাহলে এই একটা প্রোগ্রাম আপনার জীবন বদলে দিতে পারে। তাই পরবর্তী ব্যাচের জন্য অপেক্ষা করে সময় নষ্ট করাটা বোকামি হবে বলেই আমাদের মনে হয়। 55 | 56 |
57 | 58 | ## যেভাবে নিজের সিট বুকিং দিবেন - 59 | 60 | সিট বুকিং দেওয়া বলতে আসলে আমি রেজিস্ট্রেশনের কথায় বোঝাচ্ছি। রেজিস্ট্রেশন করতে আমাদের [Stack Learner](m.me/stacklearner) এর পেজে মেসেজ করতে পারেন। অথবা আমাদের সাথে ফোনে কথা বলতে পারেন - 01714137780 । অথবা আপনি চাইলে আমাদের অফিসে এসেও কথা বলতে পারেন। অফিসের ঠিকানা পাওয়ার জন্য গুগলে Stack Learner লিখে সার্চ করলেই আমাদের ঠিকানা বলে দিবে। (আপনি সার্চ করলে আমাদের কিওয়ার্ডের সার্চ ভলিউম একটু বাড়বে আরকি) । আর অফিসে আসার পূর্বে অবশ্যই আমাদের সাথে কন্ট্যাক্ট করেই আসবেন। 61 | 62 | > আমরা খুবই নবীন একটা স্টার্টাপ, ফিন্যান্সিয়াল সাপোর্ট দেওয়ার মতো অবস্থায় আমরা এখনো আসতে পারিনি। আপনাদের দোয়া এবং সাপোর্ট থাকলে অবশ্যই একদিন এই জায়গায় পৌঁছাতে পারবো। তারপরেও যদি কারোর সত্যিকার অর্থেই সাপোর্টের দরকার হয়, আমাদের [Stack Learner](m.me/stacklearner) এর ফেসবুক পেজে অথবা সাপোর্টে (support@stacklearner.com) ইমেইল করতে পারেন। আমরা আমাদের সর্বোচ্চ সাপোর্ট দেওয়ার চেষ্টা করবো। 63 | 64 |
65 | 66 | ## প্রতিটা ল্যাংগুয়েজ সম্পর্কে জানতে লিচের লিংকে ক্লিক করুন - 67 | 68 | - [Java](/program/java) 69 | - [Python](/program/python) 70 | - [Javascript](/program/javascript) 71 | -------------------------------------------------------------------------------- /src/docs/programming-fundamentals/arrays.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Arrays' 3 | --- 4 | 5 | ![SL3 Framework - What is Array](/array1.png) 6 | 7 | We Need 9 to Count 10 Elements in Array 8 | 9 | অ্যারে হচ্ছে সব থেকে বেসিক ডেটা স্ট্রাকচার যেখানে আমরা একই ভ্যারিয়েবলের ভিতরে অনেক গুলো ডেটা পাশাপাশি সাজিয়ে রাখতে পারি। অ্যারে ব্যবহার করে আমরা একই টাইপের অনেক ডেটার সাথে ডাইনামিক ভাবে কাজ করতে পারি যা ভ্যারিয়েবলের মাধ্যমে সম্ভব না। 10 | 11 |
12 | 13 | ## Start Conversation - 14 | 15 | প্রেক্ষাপটঃ আজকে তামিম খুব চিল, তার খুব ভালো লাগছে। সে কন্ডিশন, লুপ, অ্যারে সব কিছুর কনসেপ্টই ভালো ভাবে বুঝতে পারছে। এখন তার বাইরে বের হওয়া দরকার, রিয়ার সাথে আড্ডা দেওয়া দরকার নতুন নতুন বাস্তব উদাহরণ খুঁজে পেতে। তাই তামিম রিয়া কে ফোন করলো - 16 | 17 | তামিমঃ হ্যালো রিয়া। 18 | 19 | রিয়াঃ সুর্য আজকে কোন দিকে উঠেছে? তুই আমাকে ফোন দিয়েছিস? 20 | 21 | তামিমঃ কেন? আমি তোকে কখনো ফোন দেই না? 22 | 23 | রিয়াঃ একদম না, সব সময় তো আমিই ফোন দেই। 24 | 25 | তামিমঃ এইটা কিন্তু মিথ্যা কথা হয়ে গেলো। আর ফোন যেই দিক ফোনে তোর সাথে কথা বলি কি না এটা ইম্পরট্যান্ট, ফোন দেই কি না সেটা ইম্পরট্যান্ট না। 26 | 27 | রিয়াঃ হ তাই তো। আচ্ছা বাদ দে। এবার বল ফোন কেন দিয়েছিস? 28 | 29 | তামিমঃ ভাবলছিলাম ঘুরতে যাব, তোকে একটু ফুসকার ট্রিট দেব। 30 | 31 | রিয়াঃ তামিম? তুই কি সুস্থ আছিস ভাই? শরীর খারাপ লাগছে? আমি কি ডাক্তার নিয়ে আসবো? 32 | 33 | তামিমঃ আরে আমার কি হবে? আমি তো ঠিক আছি। 34 | 35 | রিয়াঃ তুই ঠিক থেকে আমাকে ট্রিট দেওয়ার কথা বলছিস? আমার তো মনে হচ্ছে আমি জেগে জেগে স্বপ্ন দেখছি। মতলব কি তোর? 36 | 37 | তামিমঃ মতলব কিছুই না। দুইজন বাইরে বের হলাম, ঘুরলাম। আজকে নো টিম আসবে না, আমরা দুইজন মিলেই আলোচনা করলাম। 38 | 39 | রিয়াঃ ওহ আচ্ছা, এবার বুঝেছি। আমার ভাইটা এত ভালো কেমনে হয়ে গেলো যে আমাকে ট্রিটের কথা বলে? 40 | 41 | তামিমঃ তুই যাবি কি না বল? 42 | 43 | রিয়াঃ না, আমি যাব না। 44 | 45 | তামিমঃ তুই যাবি না? কিন্তু কেন? 46 | 47 | রিয়াঃ আমি সকাল থেকে একটা সমস্যার সমাধান করার চেষ্টা করছি, কিন্তু কোনো ভাবেই সমাধান করতে পারছি না। এটা সমাধান না হওয়া পর্যন্ত আমি কোথাও যাব না। 48 | 49 | তামিমঃ কি সমস্যা? 50 | 51 | রিয়াঃ লুপের সমস্যা। 52 | 53 | তামিমঃ লুপ না গত কালকেই আমরা বুঝতে পারলাম? 54 | 55 | রিয়াঃ হুম, বুঝেছি। কিন্তু আমার সমস্যাটা আর একটু জটিল। কোনো ভাবেই সমাধান করা যাচ্ছে না। 56 | 57 | তামিমঃ কি সমস্যা বলবি আমাকে? 58 | 59 | রিয়াঃ আমার কাছে দশটা ভিন্ন ভিন্ন স্টুডেন্টের জন্য দশটা ভিন্ন ভিন্ন ভ্যারিয়েবল আছে। যা মধ্যে স্টুডেন্টের নাম রাখা আছে। আমি চাচ্ছি লুপ চালিয়ে সবার নাম প্রিন্ট করতে। কিন্তু কোনো ভাবেই লুপের মধ্যে ডাইনামিক ভাবে ভ্যারিয়েবলের নাম চেঞ্জ করতে পারছি না। 60 | 61 | তামিমঃ হা হা হা হা হা হা 62 | 63 | রিয়াঃ তুই হাসছিস কেন? আমার প্রব্লেম তোর কাছে হাস্যকর মনে হচ্ছে? 64 | 65 | তামিমঃ হা হা হা, দাঁড়া আগে হাসি থামায়ে নেই। তুই যদি হাতিকে বলিস আকাশে উড়তে সে পারবে? 66 | 67 | রিয়াঃ আমার সমস্যাকে তোর অবাস্তব সমস্যা মনে হচ্ছে? 68 | 69 | তামিমঃ মনে হওয়ার কি আছে? এটা তো অবাস্তব সমস্যায়। 70 | 71 | রিয়াঃ তাহলে কালকে তোরা সবাই কেমনে বললি যে দশ জন স্টুডেন্টকে একসাথে ইমেইল পাঠাবি, রেসাল্ট বের করবি? কিভাবে করবি শুনি? 72 | 73 | তামিমঃ ওহ আচ্ছা, তুই সেখানেই পরে আছিস। হা হা 74 | 75 | রিয়াঃ মজা না নিয়ে বলবি? ওইটা কেমনে করবো? 76 | 77 | তামিমঃ ওই কাজ করার জন্য শুধু লুপ যথেষ্ট না। এর জন্য লাগবে লুপ এবং অ্যারে দুটোই। 78 | 79 | রিয়াঃ অ্যারে? অ্যারে কেন লাগবে? অ্যারে কি আসলে? 80 | 81 | তামিমঃ বাইরে যাবি? 82 | 83 | রিয়াঃ চল বাইরে থেকে ঘুরে আসি। তুই না ট্রিট দিবি বলছিলি? 84 | 85 | তামিমঃ বাইরে যাচ্ছি চল, কিন্তু ট্রিট এবার তোকে দিতে হবে। না হলে অ্যারে বোঝাচ্ছি না। 86 | 87 | রিয়াঃ তামিম...। শয়তান একটা। 👿 88 | 89 |
90 | 91 | ## What is Array? 92 | 93 | প্রোগ্রামিং এ অ্যারে বলতে মূলত বোঝায় অনেক গুলো ডেটা একটা নির্দিষ্ট জায়গায় স্টোর করে রাখা। সাধারণত ডেটা গুলো একটা নির্দিষ্ট টাইপের হয়ে থাকে, যেমন - নাম্বার, স্ট্রিং বা বুলিয়ান। তবে ল্যাংগুয়েজ ভেদে কিছু ক্ষেত্রে ভিন্ন ভিন্ন ধরনের ডেটাও একটা অ্যারে এর মধ্যে স্টোর করে রাখা যেতে পারে। 94 | 95 | অ্যারে হচ্ছে সব থেকে বেসিক একটা ডেটা স্ট্রাকচার। ডেটা স্ট্রাকচারের কথা শুনলে অনেকেই একটু ভয় পেয়ে যায়। কিন্তু বাস্তবিক অর্থে এটা কঠিন কোনো বিষয় না। বিভিন্ন ডেটাকে সুন্দর করে এক জায়গায় গুছিয়ে রাখার পদ্ধতিকেই আমরা ডেটা স্ট্রাকচার বলে থাকি। আর এই কাজের জন্য সব থেকে বেসিক যেই টুলটা প্রায় প্রতিটা প্রোগ্রামিং ল্যাংগুয়েজই প্রোভাইড করে সেটা হচ্ছে অ্যারে। অ্যারে দেখতে অনেকটা নিচের চিত্রের মতো। 96 | 97 | ![SL3 Framework - Array Index](/array2.jpg) 98 | 99 | অ্যারেকে আপনি একটা কবুতরের ঘরের সাথে কল্পনা করতে পারেন। পাশাপাশি অনেক গুলো খোপ, প্রতিটা খোপের মধ্যেই কবুতর থাকে। এখানে খোপ গুলো হচ্ছে স্টোরেজ বা মেমরি আর কবুতর গুলো হচ্ছে ডেটা। প্রতিটা খোপকে চিহ্নিত করার জন্য আবার আপনি ১, ২, ৩ করে নাম্বারিং করলেন। এই নাম্বার ধরে ধরে আপনি কিন্তু বের করে আনতে পারেন যে কোন খোপে কোন কবুতর আছে। 100 | 101 | অ্যারের ক্ষেত্রেও ব্যাপারটা একই। অ্যারের প্রতিটা ঘরের মধ্যে ডেটা থাকে। প্রতিটা ঘরকে চিহিন্ত করার জন্য আবার একটা নাম্বারও আছে। একে আমরা বলি ইনডেক্স। অ্যারের ইনডেক্স শুরু হয় শূন্য থেকে। অর্থাৎ প্রথম ঘরের ইনডেক্স শূন্য, দ্বিতীয় ঘরের ইনডেক্স ১ এই ভাবে করে চলতে থাকবে। অ্যারে ইনডেক্স বেসড হওয়ার একটা বড় সুবিধা হচ্ছে ইনডেক্স একটা নাম্বার। আর আমরা নিশ্চয় নাম্বার এর সাথে বিভিন্ন অপারেশন ঘটাতে পারি? তার মানে, যে কোনো অপারেশন ঘটিয়ে আমরা যদি একবার ইনডেক্স এর নাম্বারটা বের করতে পারি তাহলে সেই ইনডেক্সে কি আছে তা আমরা সহজেই বের করে ফেলতে পারবো। 102 | 103 |
104 | 105 | ## Continue Conversation (1) 106 | 107 | **প্রেক্ষাপটঃ** তামিম আর রিয়া রিক্সাতে ঘুরতে বের হয়েছে। রিয়ার মেজাজ এখনো গরম কারণ সে তার সমস্যার সমাধান এখনো খুঁজে পাইনি। কিন্তু তামিম আজকে অনেক চিল, সে শুধু রিয়ার সাথে মজা করছে। 108 | 109 | রিয়াঃ তামিম, তুই এখনো আমাকে ওই সমস্যাটার সমাধান করে দিলি না। 110 | 111 | তামিমঃ কুল ম্যান, কুল। রিল্যাক্স কর। 112 | 113 | রিয়াঃ আমি রিল্যাক্স করতে পারবো না। আগে তুই আমাকে ওই সমস্যার সমাধান দে। 114 | 115 | তামিমঃ শুধুমাত্র ফুসকা তে ওই সমস্যার সমাধান হবে না। আর কি খাওয়াবি বল? 116 | 117 | রিয়াঃ তুই কি আমাকে ব্ল্যাক মেইল করছিস? 118 | 119 | তামিমঃ ব্ল্যাক মেইল কি, হোয়াইট মেইল কি আমি তো বুঝি না। আমি চালাই জিমেইল। 120 | 121 | রিয়াঃ উউফ... কি খাবি বল তাড়াতাড়ি। 122 | 123 | তামিমঃ ফুসকা তো খাবোই, সাথে চিকেন বল আর চিপস। এর পরে মুভি দেখতে যাবো। 124 | 125 | রিয়াঃ আমি মরছি আমার জ্বালাই আর তুই আমার সাথে মজা নিচ্ছিস? চিকেন বল আর চিপস পর্যন্তও ঠিক ছিল। তোকে এখন আমি মুভি দেখাতে নিয়ে যাবো? 126 | 127 | তামিমঃ যা, মুভি আমি দেখাতে নিয়ে যাবো। 128 | 129 | রিয়াঃ তাহলে ঠিক আছে। 130 | 131 | ![SL3 Framework - Chips Packets are Array](/array3.jpg) 132 | 133 | একটা দোকানের সামনে রিক্সাটা থাকলো। তামিম দোকানে গেলো চিপস কিনতে - 134 | 135 | তামিমঃ মামা, ১২ টা চিপস দিন তো আমাকে। কিন্তু মামা চিপসের প্যাকেট গুলো একসাথে থাকতে হবে। আলাদা করে ছিঁড়ে দেওয়া যাবে না। 136 | 137 | দোকানদারঃ ঠিক আছে মামা, সমস্যা নেই। 138 | 139 | তামিমঃ কতো হলো? 140 | 141 | দোকানদারঃ ১৮০ টাকা। 142 | 143 | তামিমঃ রিয়া, ১৮০ টাকা দে। 144 | 145 | রিয়াঃ পাগল না মাথা খারাপ? চিপস খাওয়াবো বলেছি মানে কি তোর গুষ্ঠিসুদ্ধ খাওয়াবো বলেছি? একটা চিপস এর বেশি আমি দাম দিতে পারবো না। 146 | 147 | তামিমঃ তাহলে কিন্তু অ্যারে শেখাবো না। 148 | 149 | রিয়াঃ রাখ তোর অ্যারে, আমি ১৮০ টাকা দিতে পারবো না। 150 | 151 | তামিমঃ সত্যি তো? এই চিপসের প্যাকেট গুলোর ভিতরে কিন্তু তোর সমস্যার সমাধান আছে। 152 | 153 | রিয়াঃ আমি আর তোকে কিচ্ছু খাওয়াতে পারবো না। চিপস নিয়ে বাড়িতে চল। 154 | 155 | তামিমঃ আরে মুভি দেখবি না? আমি দেখাবো তো। 156 | 157 | রিয়াঃ আমাকে তুই পুরা ফকির বানায়ে ছেড়ে দিয়েছিস। তাড়াতাড়ি রিক্সায় ওঠ, এর শোধ আমি নিবো। 158 | 159 | ১২ টা চিপসের থেকে ১ চিপস আলাদা করে তামিম রিয়ার হাতে দিলো - 160 | 161 | তামিমঃ এই নে, এটা তোর। 162 | 163 | রিয়াঃ ১২ টা চিপস কিনে তুই আমাকে একটা চিপস দিচ্ছিস? তাও চিপস গুলো আমার টাকায় কেনা। 164 | 165 | তামিমঃ কিছুক্ষণের জন্য চুপ কর, আর আমি যা বলি তাই কর। এই নে চিপসটা ধর। 166 | 167 | রিয়াঃ ধরলাম, বল এবার কি করবো? 168 | 169 | তামিমঃ খেয়াল কর, এই একটা চিপস এর প্যাকেট অন্য এগারোটা চিপসের প্যাকেটের থেকে আলাদা। এগারোটা চিপস একসাথে আছে, আর এই একটা মাত্র প্যাকেট আলাদা আছে। 170 | 171 | রিয়াঃ হুম আছে। 172 | 173 | তামিমঃ এখন তুই যদি এই সিঙ্গেল প্যাকেটকে কিছু করিস এই এগারোটা প্যাকেটের কিছু যায় আসবে? 174 | 175 | রিয়াঃ যায় আসবে বলতে? 176 | 177 | তামিমঃ ধর তুই এইটা রাস্তায় ফেলে দিলি, তাহলে কয়টা প্যাকেট পরবে? 178 | 179 | রিয়াঃ ১ টা। 180 | 181 | তামিমঃ গুড, এবার বল এগারোটা প্যাকেট থেকে তুই প্রথমটা ধরলি, প্যাকেট গুলো আলাদা করার দরকার নেই, একসাথেই থাকবে প্যাকেট গুলো। এবার প্রথমটা ধরে রাস্তায় ছুঁড়ে দিলি, কয়টা প্যাকেট পরবে? 182 | 183 | রিয়াঃ ১১ টা প্যাকেটই পরবে। 184 | 185 | তামিমঃ কেন? 186 | 187 | রিয়াঃ কারণ প্রতিটা প্যাকেট প্রতিটা প্যাকেটের সাথে লিংকড অবস্থায় আছে। 188 | 189 | তামিমঃ এক্সাক্টলি। এরা কেউ সিঙ্গেল অবস্থায় নেই। যদি কোনো কিছু সিঙ্গেল অবস্থাতে থাকে তাহলে তার ওপরে ঘটানো অপারেশন শুধু তার ওপরেই ঘটে। কিন্তু যদি আমি সব গুলোর ওপরে একই অপারেশন ঘটাতে চাই তাহলে আমার দরকার ডেটা গুলোর ভিতরে রিলেশন। 190 | 191 | রিয়াঃ কি বোঝাতে চাচ্ছিস আমি এখনো বুঝতে পারছি না। 192 | 193 | তামিমঃ মনে কর তুই এক হাতে একটা চিপসের প্যাকেটই নিতে পারিস। এবার তুই সব গুলো প্যাকেটকে আলাদা করে ফেললি। আমি তোকে এবার বললাম সব গুলো চিপসের প্যাকেট এক হাতে নিতে। তুই কি পারবি? 194 | 195 | রিয়াঃ ১২ টা প্যাকেট? 196 | 197 | তামিমঃ হুম, প্রত্যেকটা আলাদা আলাদা। 198 | 199 | রিয়াঃ না কোনো ভাবেই সম্ভব না। 200 | 201 | তামিমঃ শুধুমাত্র তখন সম্ভব যখন তারা একে অন্যের সাথে কোনো না কোনো ভাবে যুক্ত আছে। মানে প্যাকেট গুলোকে আলাদা করার পূর্বে যেই অবস্থায় ছিল সেই অবস্থায় সম্ভব। 202 | 203 | রিয়াঃ হুম, বুঝলাম। কিন্তু এর সাথে আমার প্রব্লেম এর কি সম্পর্ক? 204 | 205 | তামিমঃ তুই কি এটা বুঝতে পেরেছিস যে আমাদের একই টাইপের ডেটা গুলো একসাথে রাখলে আমাদের কাজ অনেক সহজ হয়ে যায়? 206 | 207 | রিয়াঃ হুম, সেটা তো আমি জানিই। আমার সমস্ত লিপস্টিক আমি এক জায়গায় রাখি, সমস্ত মেকআপ এক জায়গায় রাখি। একসাথে রাখলে সুবিধা তো আমি জানিই। 208 | 209 | তামিমঃ এই একসাথে রাখার উপায় হচ্ছে অ্যারে। 210 | 211 | রিয়াঃ মানে? 212 | 213 | তামিমঃ মানে, একই টাইপের অনেক গুলো ডেটা আমরা যখন একসাথে সিরিয়ালি রাখি তখন সেটা হচ্ছে অ্যারে। আর তোর সমস্যা সমাধান করার জন্য দরকার হচ্ছে অ্যারে। 214 | 215 | রিয়াঃ কেমনে? 216 | 217 | তামিমঃ দেখ, তুই যদি আলাদা আলাদা ভ্যারিয়েবলের মধ্যে আলাদা আলাদা স্টুডেন্টের ইনফরমেশন রাখিস তাহলে তো ব্যাপারটা ওই সিঙ্গেল প্যাকেটের মতোই হলো তাই না? তুই যদি ওই সিঙ্গেল স্টুডেন্টকে প্রিন্ট করিস, ডিলিট করিস বাকি স্টুডেন্টের কিছুই হবে না। এর জন্য সব স্টুডেন্টকে একটা নির্দিষ্ট জায়গায় রাখতে হবে। 218 | 219 | রিয়াঃ অনেক গুলো প্যাকেটের মতো। 220 | 221 | তামিমঃ হুম, অনেক গুলো প্যাকেটের মতো। ধর একটা ভ্যারিয়েবলের মধ্যেই সব গুলো স্টুডেন্টের ইনফরমেশন আছে তাহলে তো তোর আর দশটা ভ্যারিয়েবল নিয়ে চিন্তা করতে হচ্ছে না। 222 | 223 | রিয়াঃ সেটা তো বুঝলাম, কিন্তু একটা ভ্যারিয়েবলের ভিতরে এত গুলো স্টুডেন্টের ডেটা কেমনে রাখবো। একটার পরে আর একটা রাখলেই তো আগেরটা আপডেট হয়ে যাবে। 224 | 225 | তামিমঃ হবে না, কারণ তুই এখানে সরাসরি ডেটাটা রাখবি না। রাখবি অ্যারে এর ভিতরে। অ্যারে হচ্ছে অনেক গুলো ডেটার সমষ্টি যা একটা ভ্যারিয়েবলের ভিতরে রাখা যায়। 226 | 227 | রিয়াঃ একটা ভ্যারিয়েবলের ভিতরে যদি অনেক গুলো ডেটা রাখি তাহলে আমার যেই ডেটাটা দরকার সেটা আমি কেমনে বের করে আনবো? 228 | 229 | তামিমঃ এই বার লাইনে এসেছিস। প্রতিটা ভ্যালুর একটা করে নাম্বার আছে, সেই নাম্বার ধরে ধরে তোকে ডেটা খুঁজে বের করতে হবে। 230 | 231 | রিয়াঃ লে হালুয়া, এর ভিতরে আবার নাম্বার কোথা থেকে আসলো? 232 | 233 | তামিমঃ ১২ টা চিপসের প্যাকেটের কথা চিন্তা কর, একটা আর একটার সাথে কানেক্টেড। এখন তোকে যদি বলি ৩ নাম্বার চিপসের প্যাকেট কোনটা? তুই বের করতে পারবি না? 234 | 235 | রিয়াঃ পারবো না কেন? এটা তো সহজ। 236 | 237 | তামিমঃ কি করে পারবি? 238 | 239 | রিয়াঃ গুণবো, প্রথম থেকে গুণতে থাকবো। তিন নাম্বারে গিয়ে থেমে যাবো। 240 | 241 | তামিমঃ ইয়েস, অ্যারেও এই একই ভাবে কাজ করে। একই রকম অনেক গুলো ডেটা পাশাপাশি বসিয়ে রাখে। এই গুলোকে এক একটা ঘর মনে করতে পারিস। প্রথম ঘরের নাম্বার শূন্য, দ্বিতীয় ঘরের নাম্বার ১, তৃতীয় ঘরের নাম্বার ২। এই ভাবে শেষ পর্যন্ত চলতে থাকবে। আর ঘরের নাম্বার গুলোকে ইনডেক্স নাম্বার বলে। 242 | 243 | রিয়াঃ ওহ আচ্ছা, এইবার বুঝতে পেরেছি। তারমানে আমি দশটা ভ্যারিয়েবল নিয়ে কখনোই লুপ চালাতে পারবো না। লুপ চালাতে হবে একটা ভ্যারিয়েবলের ওপরে। তাই না? 244 | 245 | তামিমঃ হ্যাঁ তাই। তাহলে লুপ চালিয়ে কি কতে হবে? আর কেন চালাবি? 246 | 247 | রিয়াঃ আমি এবার তোকে বোঝাচ্ছি। দশটা স্টুডেন্ট আছে, তার জন্য একটা স্টুডেন্ট অ্যারে নিয়ে নেব। ইনডেক্স নাম্বার গুলো যেহেতু নাম্বার, আর এটা শুরু হচ্ছে শূন্য থেকে এবং এক করে বৃদ্ধি পাচ্ছে তাই আমাদের লুপ চালাতে হবে। লুপের ভিতরে একটা ইনডেক্স কাউন্টার থাকবে যেটা শূন্য থেকে শুরু হবে। যখন ইনডেক্স এর ভ্যালু শূন্য তখন প্রথম স্টুডেন্টের ডেটা প্রিন্ট করবে। পরের বার লুপ ঘুরে ইনডেক্স এর ভ্যালু এক হয়ে যাবে, তখন দ্বিতীয় ঘরের স্টুডেন্ট প্রিন্ট করবে। এই ভাবে চলতেই থাকবে যতক্ষণ না লুপ শেষ হচ্ছে ততক্ষণ। কি ঠিক বললাম তো? 248 | 249 | তামিমঃ ১০০% সঠিক বলেছিস। দেখেছিস তোর টাকা দিয়ে এমনি এমনি চিপস কিনি নি। কেনার পেছনে কারণ আছে। 250 | 251 | রিয়াঃ হুম বুঝলাম। তার মানে চিকেন বলও একটা অ্যারে। কারণ এক সাথে একটা কাঠির ভিতরে অনেক গুলো বল থাকে। 252 | 253 | তামিমঃ তোকে অ্যারে শেখানোর জন্যই মূলত চিকেন বল খেতে চেয়েছিলাম। 254 | 255 | রিয়াঃ গুড আমি বুঝতে পেরেছি। ফুচকা গুলোকে একটা সারিতে সাজায়ে রাখলে সেটাও একটা অ্যারে হয়ে যায়। আবার বাসের সিট গুলোও একটা অ্যারে। ওয়েট ওয়েট, এই জন্যই কি তুই আমাকে সিনেমা হলে নিয়ে যেতে চেয়েছিলি? কারণ সেখানে তো অনেক অ্যারে দেখতে পাচ্ছি আমি? 256 | 257 | তামিমঃ হুম, বুদ্ধিমান মেয়ে। চেয়েছিলাম, কিন্তু এখন আর যাবো না। তুই তো বুঝেই ফেলেছিস। 258 | 259 | রিয়াঃ শয়তান, আমাকে নিয়ে যেতেই হবে। 260 | 261 | তামিমঃ আচ্ছা যাবো, তার আগে অ্যারে নিয়ে একটা স্টোরি শোন। আজকে তো নো টিম আসবে না, তাই আমিই স্টোরি লিখেছি। 262 | 263 | রিয়াঃ বাহ বাহ, তুই তো দেখছি রাইটার হয়ে গেছিস। 264 | 265 | তামিমঃ প্রতিটা প্রোগ্রামারই একজন রাইটার বুঝলি, সারা দিন কোড লিখেও কি রাইটার এর খেতাব পাবো না? 266 | 267 | রিয়াঃ তা ঠিক, তা ঠিক। আচ্ছা তোর গল্প শোনা। 268 | 269 |
270 | 271 | ## Story Time 272 | 273 | মাহির সাহেবের অনেক দিনের ইচ্ছে একটা পার্সোনাল লাইব্রেরী তৈরি করবেন। বই পড়তে তার অনেক ভালো লাগে। সচরচর সে তার বন্ধুরদের থেকে বই নিয়ে এসে পড়ে এবং পড়া শেষে আবার ফেরত দিয়ে দেয়। তার নিজের কোনো বুক সেলফ না থাকার কারণে ইচ্ছে থাকলেও অনেক সময় বই কেনা হয়ে ওঠে না। কিন্তু পড়ার পরে কোনো বই ফেরত দিতে তার একদমই ভালো লাগে না। তার ইচ্ছে পড়া শেষে সব বই সে জমা করে রাখবে। বৃদ্ধ বয়সে তার একটা বিরাট বড় বইয়ের ভাণ্ডার হবে। 274 | 275 | কিন্তু কোনো ভাবেই তার অর্থের যোগান হচ্ছিল না। একটা ছোট্ট লাইব্রেরী শুরু করতে চাইলেও তার কমপক্ষে ২০ হাজার টাকা লাগবে। অনেক দিন থেকেই সে অল্প অল্প করে টাকা জমাচ্ছে। তার ইচ্ছে আছে, অফিস থেকে এবার ঈদের বোনাস পেলে সে তার একটা নিজস্ব লাইব্রেরী তৈরি করবে। সেখানে সে ভিন্ন ভিন্ন টাইপের বই রাখবে। তার সাহিত্য এবং ইতিহাসের প্রতি আলাদা একটা টান কাজ করে। অবসর সময়ে বেল্কনিতে বসে কফি খেতে খেতে রোমান সাম্রাজ্যে বিচরণ করার স্বপ্ন সে অনেকবারই দেখেছে। না, এইবার তার স্বপ্ন পূরণ করতেই হবে। 276 | 277 | তার ইচ্ছে নূন্যতম ৪০০ বই ধরবে এই রকম একটা সেলফ বানাবে। সেলফটাকে সর্বমোট ৪০ টা ভিন্ন ভিন্ন ভাগে ভাগ করবে। প্রতিটা ভাগের জন্য আলাদা করে নাম্বারিং করবে। আর নাম্বারিং টা শুরু হবে ০ থেকে। প্রতিটা ছোট বক্সের ভিতরে থাকবে আরও দশটা করে বই। ভিন্ন ভিন্ন টাইপের বই ভিন্ন ভিন্ন বক্সের মধ্যে রাখবে যেন খুব সহজেই বই গুলোকে খুঁজে পাওয়া যায়। প্রায় ৪০০ বই থেকে হুট করেই তো একটা বই খুঁজে পাওয়া যায় না, তাই না? এর জন্য বই গুলো সুন্দর করে সাজাতে হয়। 278 | 279 | মাহির সাহেব যেহেতু একজন প্রোগ্রামার সে সিদ্ধান্ত নিলো ছোট্ট একটা অ্যাপলিকেশনও তৈরি করবে তার পার্সোনাল লাইব্রেরী ম্যানেজ করার জন্য। যেখানে সেলফ এর মত দেখতে হুবহু ডেটা টেবিল থাকবে। প্রতিটা বক্স এর একটা নাম্বার থাকবে যেটা শুরু হবে ০ থেকে। সেলফ এর ভিতরে প্রতিটা বই এরও ০ থেকে ৯ এর ভিতরে একটা নাম্বার থাকবে যেহেতু একটা বক্সে সর্বোচ্চ ১০ টা বই থাকতে পারবে। মাহির সাহেব যখন বক্স নাম্বার এবং বই এর সিরিয়াল নাম্বার দিবেন তখন ওইখানে কি বই আছে সেটা দেখা যাবে। আবার কোনো বই এর নাম লিখে সার্চ করলেও সেটা কোন বক্সের কোন সিরিয়ালে আছে সেটা বলে দেবে। খুব সহজ এবং সুন্দর একটা সিস্টেম সে তৈরি করছে তার ছোট্ট পার্সোনাল লাইব্রেরী ম্যানেজ করার জন্য। 280 | 281 |
282 | 283 | ## Continue Conversation (2) 284 | 285 | রিয়াঃ বাহ, তুই তো খুব ভালো গল্প লিখেছিস। শিক্ষণীয় গল্প, আমাদের সবারই লাইব্রেরী তৈরি করা উচিৎ। 286 | 287 | তামিমঃ মজা নিস না, এখান থেকে কোথায় কোথায় অ্যারে দেখতে পারছিস তাই বল। 288 | 289 | রিয়াঃ আমি তো কেবল অ্যারে শিখতে পারলাম। আমি শুধু এত টুকুই জানি অনেক গুলো একই ধরনের ডেটা একসাথে রাখলে কাজ সহজ হয়। আর অনেক ডেটা এক সাথে রাখার জন্য দরকার অ্যারে। লুপ ব্যবহার করে আমরা সব গুলো ডেটার এক এক করে এক্সেস নিতে পারি। কারণ লুপের সাথে অ্যারের ইনডেক্স এর একটা সম্পর্ক আছে। 290 | 291 | তামিমঃ তুই কি বুঝেছিস তা আমি জানতে চেয়েছি? এতোই যদি বুঝে থাকিস তাহলে বল আমার গল্পে অ্যারে কোথায় আছে? 292 | 293 | রিয়াঃ হুহ, যেই না আমার গল্প তার ভিতরে আবার নাকি অ্যারে খুঁজতে হবে, যা ফোট। 294 | 295 | তামিমঃ মেজাজ গরম করিস না রিয়া, এর পরে সমস্যায় পরলে আমি কিন্তু আর তোকে হেল্প করবো না। 296 | 297 | রিয়াঃ আচ্ছা বাবা বলছি বলছি। 298 | 299 | তামিমঃ বল, তাড়াতাড়ি বল। 300 | 301 | রিয়াঃ আচ্ছা কি বলবো বলতো? সব জায়গায় তো অ্যারে। 302 | 303 | তামিমঃ সব জায়গায় অ্যারে কই পেলি তুই? 304 | 305 | রিয়াঃ দেখ, লাইব্রেরী মানেই তো একটা অ্যারে, বই এর অ্যারে। তারপরে অনেক গুলো বক্স করেছিস বই রাখার জন্য। এই গুলোও অ্যারে। বক্সের ভিতরেও বই থাকবে সেটাও অ্যারে। তুই গল্পের ভিতরে সব জায়গায় অ্যারে রেখেছিস। আমার মতো সদ্যজাত বাচ্চা যে কিনা কেবল অ্যারে সম্পর্কে জানলো সে তোর গল্পে সব জায়গায় অ্যারে পাচ্ছে। তাহলে তুই কি গল্প বানাইলি বল? 306 | 307 | তামিমঃ হুহ, থাক তুই। আমি ফাংশন নিয়ে পড়া শুরু করবো। ফাংশন নিয়ে দেখিস কি গল্প বানায়! 308 | 309 | রিয়াঃ তোর আর কষ্ট করতে হবে না, আমি অ্যারে নিয়ে আর একটু রিসার্স করি। তারপরে ফাংশন নিয়ে গল্প আমি বানাবো। 310 | 311 | তামিমঃ হা হা হা, তুই লিখবি গল্প? তাহলেই হয়ছে। 312 | 313 | রিয়াঃ কেন? একটু আগে না তুইই বললি যে সমস্ত প্রোগ্রামারই এক একজন রাইটার। 314 | 315 | তামিমঃ হুম বলেছিলাম, কিন্তু তুই তো প্রোগ্রামারই না। হা হা হা 316 | 317 | রিয়াঃ এখন হাসতে থাক। আগে অ্যারেটা ভালো মতো শেষ করি, তারপরে তোর সাথে কথা হচ্ছে। 318 | 319 |
320 | 321 | ## Story Breakdown 322 | 323 | একই ধরনের অনেক গুলো জিনিস একটা জায়গায় রাখার নামই অ্যারে। আমরা তো ভ্যারিয়েবল সম্পর্কে জেনেছি, তাই না? ভ্যারিয়েবল ব্যবহার করা হয় একটা নির্দিষ্ট ডেটা রাখার জন্য। আর অ্যারে ব্যবহার করা হয় একই ধরনের অনেক গুলো ডেটা একসাথে রাখার জন্য। ভ্যারিয়েবলের এক্সাম্পলে আমরা বাধন, মাহির এবং সাকিবের আম গুলো রাখার জন্য তিনটা ভিন্ন ভিন্ন ভ্যারিয়েবল নিয়েছিলাম। এই ক্ষেত্রে প্রত্যেকের আমের সংখ্যা জানার জন্য আমাদের প্রতিটা ভ্যারিয়েবল সম্পর্কেও জানতে হত। কিন্তু আমরা যদি প্রত্যেকের আমের সংখ্যাকে একটা অ্যারে এর ভিতরে রাখতাম তাহলে আমাদের একটা ভ্যারিয়েবল সম্পর্কে জানলেই হয়ে যেত। 324 | 325 | একটা ক্লাসে ৩০ জন শিক্ষার্থী থাকে। আপনি যদি এই ৩০ জনের নাম, ঠিকানা এবং রেসাল্ট স্টোর করে রাখতে চান অবশ্যই আপনি ৩০ টা ভিন্ন ভিন্ন ভ্যারিয়েবলের ভিতরে রাখতে পারেন। কিন্তু এর জন্যও আপনাকে ৩০ টা ভিন্ন ভিন্ন ভ্যারিয়েবল নিতে হবে, প্রতিটা স্টুডেন্টের নাম অথবা রোল নাম্বার দিয়ে ভ্যারিয়েবল তৈরি করতে হবে। চিন্তা করেন ৩০ জন শিক্ষার্থীর প্রত্যেকের জন্য আলাদা আলাদা খাতা রয়েছে। শিক্ষক যখন ক্লাসে এসে উপস্থিতি চেক করবেন তখন প্রত্যেকের জন্য আলাদা আলাদা খাতা বের করতে হবে। প্রত্যেকের জন্য আলাদা আলাদা জায়গায় লিখে রাখতে হবে সে এসেছে কি আসে নি। এটা কতটা বিরক্তিকর কাজ হবে একজন শিক্ষকের জন্য। 326 | 327 | তাহলে সহজ সমাধান কি? একটা নির্দিষ্ট খাতা যেখানে রোল অনুযায়ী সবার সিরিয়াল করা থাকবে। একটা খাতা থেকেই শিক্ষক সমস্ত শিক্ষার্থীর উপস্থিতি চেক করতে পারবেন। যেহেতু রোল নাম্বার দিয়ে এখানে সিরিয়াল করা আছে তাই শিক্ষক চাইলেই যে কোনো রোল থেকে বের করে আনতে পারবেন ওই শিক্ষার্থী কোন কোন দিন ক্লাসে এসেছে আর কোন দিন ক্লাসে আসে নি। এখানে যেই উপস্থিতি খাতার কথা বলা হচ্ছে সেটাই হচ্ছে অ্যারে। আর রোল নাম্বার দিয়ে যে শিক্ষার্থীদের সিরিয়াল করে রাখা হচ্ছে সেটা হচ্ছে ইনডেক্স নাম্বার। অ্যারের ইনডেক্স নাম্বার আর রোল নাম্বারের মধ্যে শুধু একটাই পার্থক্য। আর সেটা হচ্ছে রোল নাম্বার শুরু হয় ১ থেকে, অ্যারে ইনডেক্স নাম্বার শুরু হয় ০ থেকে। 328 | 329 | যদি আপনার কাছে একটা অ্যারে থাকে এবং সেখানে ৩ টা ডেটা থাকে তাহলে ০ নাম্বার ইনডেক্সে আছে প্রথম ডেটা, ১ নাম্বার ইনডেক্সে আছে দ্বিতীয় ডেটা আর ২ নাম্বার ইনডেক্সে আছে তৃতীয় ডেটা। এই ইনডেক্স নাম্বার ব্যবহার করে আমরা যে কোনো ডেটা বের করে আনতে পারি। আর যেহেতু সব ডেটা একটা অ্যারের ভিতরে আছে তাই আমাদের শুধু একটা ভ্যারিয়েবলের দরকার হবে। ভ্যারিয়েবল অন্যান্য ডেটার মতো অ্যারেও ধারণ করে রাখতে পারে। 330 | 331 | আমরা একটু মাহির সাহেবের কাছে ফিরে যায়। মাহির সাহেবের গল্পে আমরা অনেক গুলো অ্যারে নিয়ে কথা বলেছি। একটু ভালো করে লক্ষ্য করলেই আপনি সব গুলো অ্যারেই খুঁজে পাবেন। সবার প্রথমে যেই অ্যারেটা আছে এবং যেটা নিশ্চিত ভাবেই আপনার দৃষ্টিগোচর হবে না সেটা হচ্ছে একটা বই। আপনি হয়তো ভাবছেন বই কিভাবে একটা অ্যারে হতে পারে? এটা তো একটা সিঙ্গেল ডেটা, আমরা চাইলেই ভ্যারিয়েবলের ভিতরে একটা বইকে রাখতে পারি। অনেক গুলো বই যদি হতো তাহলে সেটা অ্যারে হতে পারতো। 332 | 333 | আপনি ঠিকই ধরেছেন, কিন্তু আপনি যদি আর একটু গভীরে গিয়ে চিন্তা করেন তাহলেই আপনি বুঝতে পারবেন বইও একটা অ্যারে। একটা বই এর ভিতরে কয়েকশ পৃষ্ঠা রয়েছে। এখানে প্রতিটা পৃষ্ঠা একটা করে ডেটা, আর সব গুলো পৃষ্ঠা দিয়ে একটা বই। তার মানে বই নিজেও একটা অ্যারে, পৃষ্ঠার অ্যারে। এখানে প্রতিটা পৃষ্ঠার আবার একটা করে নাম্বার আছে যাকে আমরা অ্যারে ইনডেক্স এর সাথে তুলনা করতে পারি। কারণ আমরা পৃষ্ঠা নাম্বার ধরে ধরে খুব সহজেই পুরো বই ট্রাভার্স মানে বিচরণ করতে পারি। 334 | 335 | মাহির সাহেব তার সেলফে ৪০ টা বক্স চাচ্ছেন। এই ক্ষেত্রে পুরো সেলফটা একটা অ্যারে হয়ে গেলো। এখন আমরা বলতে পারি সেলফ হচ্ছে বক্সের অ্যারে এবং বক্স নাম্বার ধরে ধরে কোন বক্সে কি আছে তা আমরা বের করে আনতে পারবো। আবার প্রতিটা বক্সের ভিতরে ১০ টা করে বই থাকবে। এই জন্য প্রতিটা বক্স নিজেও একটা অ্যারে, বই এর অ্যারে। আসলে আমরা যেদিকে তাকাবো সেদিকেই অ্যারে দেখতে পারবো। ক্লাসরুমে একটি বেঞ্চে ৩ জন বসতে পারে, তাহলে বেঞ্চ একটা অ্যারে। ক্লাসরুমে আবার ১২ টা বেঞ্চ আছে, তাহলে আমরা বলতেই পারি ক্লাসরুম হচ্ছে বেঞ্চের অ্যারে। একটা ক্লাসে ৩০ জন শিক্ষার্থী আছে, তাহলে ক্লাস হচ্ছে শিক্ষার্থীর অ্যারে। একটা ট্রেনে ১০ টা বগি আছে, ট্রেন হচ্ছে বগির অ্যারে। দোকানে একসাথে ১২ টা চিপসের প্যাকেট ঝুলিয়ে রাখে, এটাও একটা অ্যারে। আপনি যদি এখন চার পাশে একটু ভালো করে তাকান তাহলে আপনি সব জায়গাতেই অ্যারে খুঁজে পাবেন। আর বাস্তব জীবনে যদি আপনি অ্যারে খুঁজে পান তাহলে প্রোগ্রামিং এও আপনি অ্যারে নিয়ে কাজ করতে পারবেন। কারণ প্রোগ্রামিং হচ্ছে বাস্তব জীবনের প্রতিচ্ছবি। 336 | 337 |
338 | 339 | ## Ending Conversation - 340 | 341 | **প্রেক্ষাপটঃ** রিয়া অ্যারের কনসেপ্ট বুঝতে পেরে খুবই খুশি। সে অ্যারের কনসেপ্ট এর সাথে সাথে লুপের কাজও খুব ভালো ভাবে বুঝে ফেলেছে। সে এখন সব জায়গায় অ্যারে খুঁজে পাচ্ছে। এই সময় তামিম তাকে ফোন দিলো - 342 | 343 | তামিমঃ হ্যালো 344 | 345 | রিয়াঃ হুম বল। 346 | 347 | তামিমঃ কিরে অ্যারে বোঝা শেষ? 348 | 349 | রিয়াঃ হুম, শেষ। এখন পৃথিবী পুরো অ্যারে ময়। 350 | 351 | তামিমঃ আসলেই রে, প্রোগ্রামিং করার পূর্বে যদি আমরা আগে এইভাবে সমস্ত কনসেপ্ট ক্লিয়ার হতাম তাহলে এতো দিনে ভালো একজন প্রোগ্রামার হতে পারতাম। 352 | 353 | রিয়াঃ হুম সেটাই। সারা জীবন তো শুধু কোড শেখার চেষ্টা করেছি, কোনো দিন বুঝতে পারিনি যে কোডের থেকে বেশি গুরুত্বপূর্ণ বিষয় হচ্ছে কনসেপ্ট ক্লিয়ার হওয়া। 354 | 355 | তামিমঃ সেটাই, এখন কনসেপ্ট ক্লিয়ার হওয়াতে কোডও অনেক ইজি মনে হচ্ছে। 356 | 357 | রিয়াঃ তুই ফাংশন শুরু করেছিস? 358 | 359 | তামিমঃ না, একটু পরেই শুরু করবো। তোর গল্প লেখার কি হলো? 360 | 361 | রিয়াঃ লিখবো লিখবো। কেবল তো অ্যারে শেষ করলাম। মাথায় সেট হওয়ার মতো সময় তো দিবি? 362 | 363 | তামিমঃ ওকে ওকে, তুই মাথায় অ্যারে সেট কর আর আমি ফাংশন নিয়ে চিন্তা করতে বসে পরি। 364 | 365 | রিয়াঃ ওকে বাই। 366 | 367 | তামিমঃ রেডি থাকিস, কালকে তোকে পচাবো। 368 | 369 | রিয়াঃ 👿 370 | -------------------------------------------------------------------------------- /src/docs/programming-fundamentals/functions.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Functions' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। এখানে আমাদের পুরাতন রিসার্সের আর্টিকেল দেওয়া আছে। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | 7 | রিজুয়ান সাহেব বিরিয়ানি খেতে খুব ভালোবাসেন। কিন্তু করোনার সময় তার আশেপাশের কোনো বিরিয়ানির দোকানই খোলা নেই। আর লক ডাউনে বাইরে বের হতে না পেরে তার নিজের মনের মধ্যেও কেমন একটা হা হা কার অনুভূত হচ্ছে। মনে মনে সে পেট ভরে বিরিয়ানি খাচ্ছে, কিন্তু কোনো ভাবেই মন থেকে বিরিয়ানির কথা মুছতে পারছে না। সে ব্যাচেলর মানুষ, বাড়িতে একটা বউ থাকলেও তার কাছে আবদার করা যেত। আবদার পূরণ হতো কি ঝাঁটার বারি খেতে হতো সেটা তো পরের বিষয়। কিন্তু আফসোস তো করা লাগতো না? 8 | 9 | কি করা যায়? অবশেষে রিজুয়ান সাহেব সিদ্ধান্ত নিলেন নিজেই বিরিয়ানি রান্না করবেন। সে জীবনে অনেক বিরিয়ানি খেয়েছেন। তার একটা বৈশিষ্ট্য হচ্ছে যেখানে বিরিয়ানি খেয়ে তার ভালো লাগতো সেখানেই সে বাবুর্চির সাথে কথা বলতেন। বিরিয়ানি রান্না নিয়ে আলোচনা করতেন। অনেক বাবুর্চির সাথে তার ভালো সম্পর্কও আছে। তাই বিরিয়ানি রান্না করাটা খুব একটা বড় বিষয় হবে না। আর করোনার কারণে দুই এক সপ্তাহের খাবার তার বাসায় স্টোর করে রাখা আছে। খুঁজলে বিরিয়ানি রান্না করার সমস্ত উপকরণ সবই পাওয়া যাবে। দুই একটা না পাওয়া গেলেও কোনো সমস্যা নেই। সে তো আর ৫ তারা হোটেলের বাবুর্চি না যে সব পার্ফেক্ট হতে হবে। 10 | 11 | ডিসিশন ফাইনাল, সে বিরিয়ানি রান্না করবে। সমস্ত উপকরণও সে বের করে রেখেছে। সব গুলো উপকরণ সামনে রেখে সে বসে বসে ভাবছে কিভাবে কি করবে? কোথা থেকে শুরু করবে? কি কি কাজ সে সহজেই পারবে আর কি কি কাজ তাকে অনেক প্যারা দিবে? সে সিদ্ধান্ত নিলো এক কাপ কফি খাওয়া দিয়েই সে শুরু করবে। কফি মেকারের বাটন প্রেস করেই সে এক কাপ কফি বানিয়ে ফেললো। কফি খেতে খেতে সে দেখলো, সব থেকে প্যারার কাজ হচ্ছে পিঁয়াজ কুচি কুচি করে কাটা আর মশলা গুড়া করা। সে অবশ্য এটা নিয়ে মোটেও বিভ্রান্ত নয়। কারণ মাঝে মাঝেই তাকে নিজের রান্না করে খেতে হয়। তাই পিঁয়াজ কাটার মেশিন এবং ব্লেন্ডার সবই তার বাসায় আছে। 12 | 13 | সে মাংসটা বানাবে প্রেশার কুকারে, কারণ মাংস একটু নরম না হলে তার জমে না। বাকি রান্নাটা হবে হাঁড়িতে। মাংস ভালোভাবে মশলা দিয়ে কশানোর পরেই মূলত হাঁড়িতে ভাত রান্নার কাজ শুরু হবে। বেশির ভাগ মশলার গুঁড়াই তার কেনা আছে। অল্প কিছু মশলা ব্লেন্ড করতে হবে। বাসায় কিছু টক দইও আছে। রিজুয়ান সাহেবের আবার লাচ্চি খুব পছন্দের। সে টক দই নিয়ে পরিমাপ করছে যে, বিরিয়ানি রান্না করার পরে এক গ্লাস লাচ্চি বানানোর মতো টক দই বাঁচে কিনা। 14 | 15 | অনেক কষ্ট করার পরে প্রায় তিন ঘণ্টা লাগাতার পরিশ্রম করার পরে বিরিয়ানি প্রস্তুত। চেহারা দেখে বোঝার উপায় নেই যে এটা বিরিয়ানি হয়েছে না অন্য কিছু। তবে রিজুয়ান সাহেব অনেক খুশি। এত দিন সে অন্যের হাতের বিরিয়ানি খেয়ে অনেক প্রশংসা করেছেন। আজকে প্রথমবারের মতো নিজের হাতে বিরিয়ানি রান্না করলেন। বার বার তার নিজের রান্না করা বিরিয়ানির দিকে তাকাচ্ছেন, ছবি তুলছেন। 'No Team' এর সবাইকে ট্যাগ করে ফেসবুকে ছবিও পাবলিশ করেছেন। তার মন চাচ্ছে 'No Team' এর সকল মেম্বারকে ডেকে দেখাতে এবং মন ভরে খাওয়াতে। 'No Team' কে সে অনেক মিস করছে। টিমের কথা চিন্তা করতে করতেই সে প্রথমবারের মতো খাবার মুখে দিলো। খাবার মুখে দেওয়ার সাথে সাথেই সে ফেসবুক ওপেন করে নিজের প্রোফাইলে গেলো। দেখলো এখনো খুব বেশি রিয়েকশন আসে নি, মাত্র ১৫ টা রিয়েকশন। কোনো কিছু না ভেবেই সে পোষ্টটা ডিলিট করে দিল। এর পরে তার বিরিয়ানির দিকে তাকিয়ে ভাবতে থাকলো, মনের খুদা তো মিটেছে কিন্তু পেটের খুদা মেটাবো কিভাবে! 16 | 17 | ছোট বেলায় সাধারণ গণিত বইতে আমরা সবাই কম বেশি ফাংশন এর নাম শুনেছি। ফাংশন, ডোমেন, রেঞ্জ নাম গুলো শুনলে আপনাদের কি হতো আমার জানা নেই বাট আমার মেজাজটাই গরম হয়ে যেতো। কি হবে এই সব শিখে? বাস্তব জীবনে তো আমি এর কোনো কাজ দেখি না। তখন তো আর জানতাম না, সারা জীবন এই ফাংশন নিয়েই পড়ে থাকতে হবে। প্রোগ্রামিং এর অন্যতম একটা বিউল্ডিং ব্লক হচ্ছে এই ফাংশন। ফাংশন ছাড়া কোনো কিছু কল্পনায় করা যায় না। ফাংশনের মাধ্যমে একটা বড় প্রোগ্রামকে ভেঙ্গে ছোট ছোট ইউনিটে রূপান্তর করা যায়। পরবর্তীতে এই ছোট সমাধানের টুকরাকে যতবার খুশি ততবার ব্যবহার করা যায়। 18 | 19 | যদি কোনো কাজ আমাদের বার বার করতে হয় সেই কাজটা দিয়ে আমরা একটা ফাংশন বানাতে পারি। দাঁড়ান দাঁড়ান, একই কাজ বার বার করার জন্য আমরা তো লুপ ব্যবহার করি, তাহলে ফাংশন কেন? কারণ লুপ একবার শুরু হয়ে গেলে আমাদের হাতে আর কোনো কনট্রোল থাকে না। একটা নির্দিষ্ট সময় পর্যন্ত চলতেই থাকে। কিন্তু ফাংশন আমরা যখন চাইবো তখন কল করতে পারবো। আর একবার কল করলে একবারই এক্সিকিউট হবে। ফাংশন একটা মেশিনের মতো কাজ করে। এর ভিতরে আমরা কিছু ইনপুট দিবো, ফাংশন সেটাকে প্রোসেস করবে, তারপরে কিছু একটা আউটপুট আসবে। অন্য কোনো কোডের জানারও দরকার নেই যে ফাংশন কিভাবে কাজটা সম্পন্ন করলো। যেই ফাংশনের কাজ সেই ফাংশনই সম্পন্ন করবে এবং তার থেকে পাওয়া আউটপুট অন্য যে কোনো জায়গায় ব্যবহৃত হবে। 20 | 21 | আমাদের রিজুয়ান সাহেব বিরিয়ানি রান্না করার সময়ও কিন্তু অনেক গুলো ফাংশনের সাহায্য নিয়েছেন। প্রথমত বিরিয়ানি রান্না করাটাই যেহেতু তার মেইন উদ্দেশ্য, তাই আমি বলতেই পারি এটা মেইন ফাংশন। মেইন ফাংশন সব গুলো ফাংশনের আউটপুট নিয়ে আসল কাজটা সম্পন্ন করে থাকে। সে কফি বানানোর জন্য কফি মেকার ব্যবহার করেছেন। তারমানে কফি মেকার এখানে একটা ফাংশন। কফি মেকারে কফি, চিনি, কফিমেট, পানি ইনপুট হিসেবে দিলে সে তৈরি কফি আউটপুট দেয়। রিজুয়ান সাহেব পেঁয়াজ কাটার জন্য পেঁয়াজ কাটার ব্যবহার করেছিল, এটাও একটা ফাংশন। কারণ এখানে ইনপুট করেছিল আস্ত পেঁয়াজ কিন্তু আউটপুট পেয়েছিল কুচি কুচি করা পেঁয়াজ। মশলা গুড়ো করা জন্য সে যে ব্লেন্ডার ব্যবহার করেছিল সেটাও একটা ফাংশন। ফাংশন ফাংশন আর ফাংশন, আপনি একটু চারপাশে ভালো করে তাকালেই দেখতে পারবেন এখন আপনার চারপাশে কতো ফাংশন রয়েছে। 22 | 23 | ফাংশনের ভিতরে আবার যেকোনো কিছুই করা যায়। ভ্যারিয়েবল ডিক্লেয়ার করা যায়, স্টেটেমেন্ট লেখা যায়, কন্ডিশন, লুপ সব কিছু নিয়েই কাজ করা যায়। আর একটা ফাংশনের উদাহরণ দিয়ে ব্যাপারটা বোঝা যাক। রিজুয়ান সাহেব খাবার গরম করার জন্য ওভেন এ খাবারটা দিয়ে ১ মিনিটের জন্য টাইমার সেট করে দিলো। এখানে ওভেন একটা ফাংশন যে ঠাণ্ডা খাবার ইনপুট হিসেবে নিচ্ছে এবং গরম খাবার আউটপুট দিচ্ছে। এই ফাংশনের ভিতরে কিন্তু একটা লুপ এবং একটা কন্ডিশন রয়েছে। ১ মিনিট বা ৬০ সেকেন্ড ওভেন চলবে এটা হচ্ছে একটা লুপ। সময়টা কাউন্ট করার জন্য অবশ্যই লুপ লাগবে। আবার ওভেন চালু থাকা অবস্থাতে আমরা স্টপ বাটনে প্রেস করে ওভেন থামিয়ে দিতে পারি। তাই এখানে একটা কন্ডিশন কাজ করছে যে স্টপ বাটনে প্রেস হয়েছে কি না? যদি স্টপ বাটনে প্রেস করা হয় তাহলে ওভেন থেমে যাবে না হলে চলতে থাকবে। 24 | 25 | আসলে সব কিছুই ফাংশন। ছোট বেলায় ফাঁকি দিয়ে আসা ফাংশনের চ্যাপ্টার যে জীবনের সাথে ওতপ্রোত ভাবে মিশে যাবে তা কখনওই ভাবিনি। এখন যেদিকে তাকায় সেদিকেই শুধু ফাংশন ফাংশন আর ফাংশন। আসলে শুধু ফাংশন না, প্রোগ্রামিং ফান্ডামেন্টালস এর প্রতিটা টপিক্সই চোখের সামনে ভাসে। মনে হয় বাস্তব জীবন থেকেই এই টপিক্স গুলো নিয়ে প্রোগ্রামিং এ বসিয়ে দেওয়া হয়েছে। 26 | -------------------------------------------------------------------------------- /src/docs/programming-fundamentals/languages.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Choose A Programming Langauge' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। এখানে আমাদের পুরাতন রিসার্সের আর্টিকেল দেওয়া আছে। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | 7 | সাইদুর কমার্সের স্টুডেন্ট। কিন্তু তার প্রোগ্রামিং এর প্রতি অনেক আগ্রহ। তার স্বপ্ন সে একজন ভালো মাপের প্রোগ্রামার হবে। এই স্বপ্ন পূরণের উদ্দেশ্যে সে অনেক জায়গায় দৌড়া দৌড়ি করেছে। অনলাইনে অনেক ঘাটা ঘাটি করেছে। কিন্তু কোনো ভাবেই যখন কিছু হচ্ছিল না তখন সে ফেসবুকে XYZ প্রতিষ্ঠানের বিজ্ঞাপণ দেখতে পান। সেখানে তারা ২ মাসে ওয়েব ডেভেলপমেন্ট এবং ফ্রিলান্সিং এর কমপ্লিট কোর্স করাবে। দুই মাস পারে ইনকাম গ্যারান্টিও দিচ্ছে। চকমপ্রদ বিজ্ঞাপন দেখে আগে পিছে চিন্তা না করেই সাইদুর সেখানে গিয়ে ভর্তি হয়ে গেলো। 8 | 9 | ভর্তি হওয়ার পরে দেখলো সেখানে তারা ওয়ার্ডপ্রেসে থিম কাস্টমাইজেশন শেখাচ্ছে। দুই মাস সে মনোযোগ সহকারে পুরো কাজটা শিখলো এবং কোর্স শেষে সে কয়েকটা কাজও পেল ফ্রিলান্সিং মার্কেটপ্লেসে। কিন্তু কোনো ভাবেই সে খুশি হতে পারলো না। তার ইচ্ছে ছিল প্রোগ্রামার হওয়ার, থিম কাস্টমাইজেশন করে টাকাতো আসছে কিন্তু স্যাটিস্ফেকশন আসছে না। সে সব কিছু ছেড়ে ছুঁড়ে প্রোগ্রামিং এর প্রতি মনোযোগী হওয়ার সিদ্ধান্ত নিলো। কিন্তু এইবার পরলো সে বিপাকে। কোন প্রোগ্রামিং ল্যাংগুয়েজ সে শিখবে? 10 | 11 | ওয়ার্ডপ্রেসে কাজ করার সময় সে জাভাস্ক্রিপ্ট এবং পিএইচপি এর নাম মোটামোটি শুনেছে। অনেক ভেবে চিন্তে সিদ্ধান্ত নিলো সে জাভাস্ক্রিপ্ট শিখবে। প্রোগ্রামিং এর প্রতি তার প্যাশন ছিল অন্য মাত্রার। তাই সে অল্প কিছু দিনের ভিতরেই জাভস্ক্রিপ্টের অনেক কিছু শিখে ফেললো। সে জাভাস্ক্রিপ্ট কোড বুঝতে শুরু করলো এবং টুকটাক নিজেও জাভাস্ক্রিপ্ট কোড লেখা শুরু করলো। কিন্তু এখনো সে স্যাটিস্ফাইড হতে পারলো না। কারণ সে সমস্যা বুঝতে পারে, কেউ কোড দেখায়ে দিলে করতে পারে, কিন্তু নিজে করতে পারে না। কারণ তার প্রোগ্রামিং ফান্ডামেন্টালস এর জ্ঞান একদমই নেই। সে গুগল করে, ইউটিউব দেখে সিনট্যাক্স শিখেছে। কিন্তু একটা প্রোগ্রামিং সমস্যাকে কিভাবে দেখতে হয়, কিভাবে সমস্যাটাকে ব্রেকডাউন করতে হয়, কিভাবে সম্ভাব্য সমাধান খুঁজে বের করতে হয় সেই বিষয়ে তার ফরমাল কোনো জ্ঞান নেই। এই একই সমস্যায় জড়জড়িত হয়ে মনের কষ্টে প্রোগ্রামিং, ডেভেলপমেন্ট থেকে মুখ ফিরিয়ে নিচ্ছে হাজার হাজার সম্ভাবনাময় শিক্ষার্থী। কেউ কেউ কোনো ভাবে একটা ল্যাংগুয়েজ শিখতে পারলে সেটাকেই আঁকড়ে ধরে রাখতে চাচ্ছে। কারণ মনের অজান্তেই তাদের ভিতরে একটা ল্যাংগুয়েজ ভীতি চলে এসেছে। 12 | 13 | প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে একটা যন্ত্র। এই যন্ত্রটা যে কি সেটা বুঝতেই আমাদের মাথা খারাপ হয়ে যাচ্ছে, আমরা মনে করছি যন্ত্রটা বুঝতে পারলেই সব হয়ে যাবে। কিন্তু যন্ত্রটা কিভাবে চালাতে হয় সেটার দিকে আমরা ফোকাসই দিচ্ছি না। ব্যাপারটাকে আরও সহজ করে ভেঙ্গেচূড়ে বলা যেতে পারে। ধরুন আপনি বাইক চালানো শিখবেন। তাহলে বাইক কিভাবে চালাতে হয়, চালানোর সময় কি কি রুলস মেনে চলতে হয়, কোনটা ক্লাস, কোনটা গিয়ার, কোনটা এক্সেলেটর, এদের কোনটার কি কাজ এই গুলো আপনি শিখবেন। একবার যদি বাইক চালানো শিখতে পারেন আপনি ওয়ালটনের বাইকও যেমন চালাতে পারবেন, ঠিক একই ভাবে আপনি KTM এর বাইকও চালাতে পারবেন। এখানে মূল বিষয় হচ্ছে বাইক চালাতে শেখা, কোন ব্রান্ডের বাইক আপনি চালাচ্ছেন সেটা মুখ্য বিষয় না। প্রোগ্রামিং এর ক্ষেত্রেও আপনাকে প্রথমে এর ফান্ডামেন্টাল বিষয় গুলো বুঝতে হবে যে গুলো প্রতিটা ল্যাংগুয়েজের ক্ষেত্রেই এক। ফান্ডামেন্টাল বিষয় গুলো ব্যবহার করে প্রব্লেম সল্ভ করতে হবে। প্রব্লেমকে একজন প্রোগ্রামারের মতো করে দেখা শিখতে হবে, প্রব্লেমকে ব্রেক ডাউন করে তার সমাধান বের করা শিখতে হবে। তারপরে আপনার করা সমাধানকে আপনি যে কোনো ল্যাংগুয়েজ ব্যবহার করে কম্পিউটারে ইমপ্লিমেন্ট করতে পারবেন। এই ক্ষেত্রে সমাধানটা প্রতিটা ল্যাংগুয়েজের জন্য একই থাকবে। শুধুমাত্র ল্যাংগুয়েজ ভেদে সিনট্যাক্স পরিবর্তন হয়ে যাবে। তারমানে আমরা যেটা বুঝতে পারলাম বিভিন্ন ল্যাংগুয়েজের স্পেসিফিকেশন বা সিনট্যাক্স এর দিকে প্রথমেই আমাদের ফোকাস দেওয়ার দরকার নেই। প্রথমে আমাদের প্রোগ্রামিং মাইন্ডসেট তৈরি করতে হবে। যখন মাইন্ডসেট ভালোভাবে তৈরি হয়ে যাবে তখন ল্যাংগুয়েজের অ্যাডভানস বিষয় গুলোও আমরা খুব দ্রুত শিখে ফেলতে পারবো। 14 | 15 | প্রোগ্রামার হওয়ার এই কমান্ডো ট্রেইনিং এ ল্যাংগুয়েজ কোনো বিষয় না। আপনি এখন যেই ল্যাংগুয়েজ নিয়ে কাজ করছেন সেটাতেই কন্টিনিউ করতে পারেন। সেটা সি, সি++, জাভা, জাভাস্ক্রিপ্ট, পাইথন, পিএইচপি, সি শার্প, রুবি, পার্ল বা যে কোনো ল্যাংগুয়েজই হতে পারে। এখানে ল্যাঙ্গুয়েজটা মুখ্য বিষয় না, মুখ্য বিষয় যে কোনো ভাবে আমরা প্রোগ্রামিং এর ফান্ডামেন্টালস গুলো যেন ইমপ্লিমেন্ট করতে পারি। যদি আপনার পূর্বে কোনো ল্যাংগুয়েজ নিয়ে কাজ করার অভিজ্ঞতা না থাকে তাহলে আপনি সি প্রোগ্রামিং দিয়ে শুরু করতে পারেন। কারণ এখানে ল্যাংগুয়েজ আপনাকে এক গাদা ফিচার দিয়ে পথভ্রষ্ট করবে না। তবে অন্য ল্যাংগুয়েজের ক্ষেত্রে কোনো বাধা ধরা নিয়ম নেই। একটা কথা মাথায় রাখবেন, যদি সঠিক ভাবে প্রোগ্রামিং ফান্ডামেন্টালস এবং প্রোগ্রামিং মাইন্ডসেট আপনি তৈরি করতে পারেন তাহলে ল্যাংগুয়েজ ভীতি আপনার আর থাকবে না। যখন প্রয়োজন হবে তখনই নতুন ল্যাংগুয়েজ শিখে নিতে পারবেন। 16 | 17 | আপনি যেই ল্যাংগুয়েজই সিলেক্ট করেন না কেন আপনার কাজ শুধুমাত্র প্রোগ্রামিং এর যেই ফান্ডামেন্টালস বিষয় গুলো এখানে আলোচনা করা হয়েছে, সেই গুলো নিয়েই স্টাডি করা। এর বাইরে কোনো কিছুই কমান্ডো ট্রেইনিং চলার সময়ে আপনি ছুঁয়ে দেখতে পারবেন না। SL3 Framework এর সাথে যাত্রা শুরু করার পূর্বেই আপনাকে এই ফান্ডামেন্টাল বিষয় গুলো আপনার পছন্দের ল্যাংগুয়েজে কিভাবে লিখতে হয় সে গুলো একটু দেখে নিবেন। আর তা না হলে পরে ল্যাংগুয়েজ সিনট্যাক্স এবং প্রব্লেম সল্ভিং আপনার জন্য একটা বড় সমস্যার সৃষ্টি করতে পারে। 18 | -------------------------------------------------------------------------------- /src/docs/programming-fundamentals/overview.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Overview Of Programming Fundamentals' 3 | --- 4 | 5 | যে কোনো একটা সমস্যা সমাধানের জন্য সুডো কোড সব থেকে ভালো মাধ্যম। কিন্তু ভালো ভাবে সুডো কোড লেখার জন্যও আগে থেকে প্রোগ্রামিং সম্পর্কিত কিছু জ্ঞান থাকা জরুরি। তা না হলে আমি বুঝবো কিভাবে যে কি কি কাজ আমি প্রোগ্রামিং এ করতে পারবো আর কি কি কাজ আমি প্রোগ্রামিং এ করতে পারবো না? বিগিনারদের মধ্যে সচরাচরই একটা কনফিউশন দেখা যায় যে তারা নিশ্চিত হতে পারে না যে তাদের কতটুকু প্রোগ্রামিং ল্যাংগুয়েজ শেখা উচিৎ। ঠিক কতটুকু শেখার পরে তারা সমস্যার সমাধান করতে পারবে? 6 | 7 | এই সমস্যার সহজ সমাধান হচ্ছে প্রোগ্রামিং ফান্ডামেন্টালস। সুডো কোড ব্যবহার করে যখন আমরা একটা সমস্যার সমাধান করি তখন যেমন সেই সমস্যাটা আমরা যে কোনো প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করেই সমাধান করতে পারি। ঠিক একই ভাবে প্রোগ্রামিং এর যে ফান্ডামেন্টাল কনসেপ্টগুলো আছে সেগুলো কোনো ল্যাংগুয়েজ স্পেসিফিক না। প্রতিটা প্রোগ্রামিং ল্যাংগুয়েজ এই এই কনসেপ্ট গুলো আপনি পাবেন। হতে পারে তার সিনট্যাক্স গুলো একটু ভিন্ন, কিন্তু কাজ একই করবে। 8 | 9 | ![SL3 Framework - Programming Fundamentals](/programming-fundamentals.jpg) 10 | 11 | ## Introducing Character 12 | 13 | একদম ছোটো বেলায় ১ থেকে ১০০ পর্যন্ত গুনতে শিখেছিলাম। তারপরে আঙ্গুল গুণে গুণে যোগ বিয়োগ গুণ ভাগ করা শিখেছিলাম। ২০ এর ঘর পর্যন্ত নামতাও মুখস্ত করেছিলাম। বড় হওয়ার পরে আজ পর্যন্ত একটা দিনও এমন যায় নি, যেদিন এই সংখ্যা, যোগ বিয়োগ আমার কাজে লাগে নি। কোনো না কোনো ভাবে ঠিকই কাজে লেগেছে। এবং আমার মনে হয় না, মৃত্যুর পূর্বে এর প্রয়োজন ফুরাবে। এটা হচ্ছে ম্যাথমেটিক্সের ফান্ডামেন্টালস। যেগুলো ছোটো বেলায় শেখানোর জন্য বাবা মা কত আজিব আজিব কাজ করতো। 14 | 15 | ম্যাথমেটিক্সের মতো প্রোগ্রামিং এর ও কিছু ফান্ডামেন্টাল কনসেপ্ট আছে। যেগুলোও আপনার কাজে লাগবে ঠিক ততদিন যতদিন আপনি কোড করবেন। এই যে বড় বড় সফটওয়্যার দেখেন না? ফেসবুক, গুগল, মাইক্রোসফটের মতো কোম্পানি তাদের প্রোডাক্ট ডেভেলপ করার জন্য লক্ষ লক্ষ লাইনের কোড লিখে রেখেছে? সব কোড তৈরি হয়েছে এই ফান্ডামেন্টাল কনসেপ্ট গুলো দিয়ে। হুম আমি মানছি, এই টপিক্স বাদেও আরও কিছু অ্যাডভান্সড কনসেপ্ট আছে এখানে। তবে যত বড় ম্যাথম্যাটিক্যাল প্রব্লেমই আপনি সল্ভ করেন না কেন, সেখানে কি ০-৯ বাদে অন্য কোনো সংখ্যা আপনি দেখাতে পারবেন? সফটওয়্যারের ক্ষেত্রে প্রোগ্রামিং ফান্ডামেন্টালসও অনেকটা ম্যাথমেটিক্স এর ০-৯ ডিজিট এর মতো। 16 | 17 | এত গুরুত্বপূর্ণ একটা বিষয় তো আর যেমন তেমন ভাবে শেখা যায় না, একটু গুরুত্ব দিয়েই শিখতে হবে। গুরুত্ব দিয়ে শিখবো কিন্তু মজা করে শিখবো। আমরা প্রোগ্রামিং এর ফান্ডামেন্টাল কনসেপ্ট গুলো শিখবো কনভার্সেশনের মাধ্যমে। এখানে অনেক গুলো ক্যারেক্টার থাকবে। প্রত্যেকে প্রত্যেকের জায়গাতে প্রোগ্রামিং শিখছে। একে অন্যের সাথে আলোচনা করছে, আলোচনা করার মাধ্যমে প্রোগ্রামিং শিখছে। তারা সব সময় বাস্তব জীবনের সাথে প্রোগ্রামিং কে মেলানোর চেষ্টা করছে। এই গল্পের মূল চরিত্রে থাকছে তামিম এবং রিয়া। শিক্ষক হিসেবে থাকছে নাঈম। এছাড়াও গল্পের সুবিধার্তে থাকছে আরও কিছু ক্যারেকটার। গল্পে গল্পে কখন আপনি প্রোগ্রামিং ফান্ডামেন্টাল শিখে ফেলবেন তা আপনি বুঝতেও পারবেন না। এই গল্পের মাধ্যমে শুধু প্রোগ্রামিং ফান্ডামেন্টালস না, এর বাইরেও আরও অনেক কিছু আপনি আপনার অজান্তেই শিখে ফেলবেন। 18 | 19 | ## Start Conversation - 20 | 21 | প্রেক্ষাপটঃ তামিম এবং রিয়া, দুইজন খালাতো ভাই বোন। দুজনেই SL3 এর অনলাইন প্রোগ্রামে জয়েন করেছে। আজকে তাদের প্রথম লাইভ ক্লাস নাঈম ভাইয়ের সাথে। তারা খুবই উত্তেজিত, অনেক দিন হলো দুজনের মাথাতেই প্রোগ্রামিং এর ভূত চেপেছে। অনলাইনে অনেক প্রোগ্রামিং ল্যাংগুয়েজের কোর্স করার পরেও যখন কিছু হচ্ছিল না তখন তারা প্রোগ্রামিং শিখতে SL3 Program এই জয়েন করেছে। রাত ৯ টায় ক্লাস, এখন ৮:৩৫ বাজে। রিয়া নিজের উত্তেজনা ঠেকাতে না পেরে তামিমকে ফোন করছে - 22 | 23 | তামিমঃ হ্যালো 24 | 25 | রিয়াঃ কি রে কি করিস? 26 | 27 | তামিমঃ তুই ফোন দেওয়ার আর সময় পাস না? একটু পরে ক্লাস আর তুই এখন আমাকে ফোন দিয়ে জিজ্ঞাসা করিস যে আমি কি করি? 28 | 29 | রিয়াঃ একটু পরে যে ক্লাস সেটা তো আমিও জানি। আমার আর তর সইছে না, তাই তোকে ফোন দিলাম সময় কাটানোর জন্য। 30 | 31 | তামিমঃ আমারও সেম অবস্থা। আমি সব কিছু গোছগাছ করে রাখছি যেন ক্লাসের সময় ওঠা না লাগে। 32 | 33 | রিয়াঃ তুই এখন গোছগাছ করছিস? আমি তো সন্ধ্যায় সব কিছু গুছিয়ে বসে আছি। 34 | 35 | তামিমঃ মেয়েরা এই সব কাজে একটু ফাস্ট হয়, প্রোগ্রামিং করার সময় দেখবো তুই কত ফাস্ট। 36 | 37 | রিয়াঃ হইছে, আর ভাব মারতে হবে না। 38 | 39 | তামিমঃ ওহ শিট! শিট শিট শিট! নো! 😩👿 40 | 41 | রিয়াঃ কি হলো? 42 | 43 | তামিমঃ লোড শেডিং। 44 | 45 | রিয়াঃ ওহ নো, এখন কি করবি? ল্যাপটপে চার্জ আছে? 46 | 47 | তামিমঃ ল্যাপটপে তো চার্জ আছে, কিন্তু ইন্টারনেট কয় পাবো? আমার প্রথম ক্লাসই কি মিস যাবে নাকি? 48 | 49 | রিয়াঃ ফোনে ইন্টারনেট প্যাক কিনে নে। 50 | 51 | তামিমঃ আমার কাছে এক টাকাও নেই, আমাকে কিছু নেট ধার দিবি? 52 | 53 | রিয়াঃ উহু, তোকে ধার দিলে সেই টাকা আর ব্যাক পাওয়া যায় না। 54 | 55 | তামিমঃ সত্যি বলছি, কালকের ভিতরেই তোকে ফেরত দিয়ে দেবো। 56 | 57 | রিয়াঃ উহু, তোর সত্যি কথা আমার জানা আছে। 58 | 59 | তামিমঃ প্লিজ, বোন আমার। তুই না আমার বড় আপু? ছোট ভাইয়ের এই টুকু আবদার রাখবি না? 60 | 61 | রিয়াঃ আচ্ছা যা, SL3 Program এর কথা তুই আমাকে বলেছিলি। এই জন্য তোকে ২ জিবি নেট গিফট করলাম। যদি SL3 Program ভালো না হয় তাহলে তোর থেকে ৫ জিবি উশুল করবো। 62 | 63 | তামিমঃ আচ্ছা বাবা, নিস। এখন আগে তুই ইন্টারনেট প্যাক গিফট কর। 64 | 65 | রিয়াঃ ওকে বাবা করছি, একটু সবুর কর। 66 | 67 | তামিমঃ 😍 68 | 69 | ![SL3 Framework - Online Class](/online-class.jpg) 70 | 71 | ## Continue Conversation (1) - 72 | 73 | প্রেক্ষাপটঃ অনলাইন ক্লাসে সবাই উপস্থিত, পরিচয়পত্র নেওয়া শেষে প্রোগ্রামিং ফান্ডামেন্টালস নিয়ে আলোচনা চলছে। 74 | 75 | নাঈমঃ ফান্ডামেন্টালস বলতে আসলে কি বোঝায়? কেউ কি বলতে পারবেন? 76 | 77 | তামিমঃ ভাইয়া ফান্ডামেন্টাল মানে হচ্ছে মৌলিক। 78 | 79 | নাঈমঃ শতভাগ সঠিক উত্তর। প্রোগ্রামিং এর কিছু ফান্ডামেন্টাল বা মৌলিক বিষয়বস্তু আছে। আপনারা প্রোগ্রামিং 80 | 81 | ফান্ডামেন্টাল টপিক গুলো কে আমাদের মৌলিক চাহিদা গুলোর সাথে তুলনা করতে পারেন। আমাদের কয়টা মৌলিক বিষয় আছে যেন? 82 | 83 | রিয়াঃ ৫ টা, খাদ্য, বস্ত্র, বাসস্থান, চিকিৎসা এবং শিক্ষা। 84 | 85 | নাঈমঃ ঠিক বলেছেন। আমাদের পাঁচটা মৌলিক চাহিদা আছে। আর সেগুলো হলো - খাদ্য, বস্ত্র, বাসস্থান, চিকিৎসা এবং শিক্ষা। এই মৌলিক চাহিদা গুলো পূরণ হলেই যে কোনো মানুষ বেঁচে থাকতে পারে। কি পারে না? 86 | 87 | তামিমঃ জি, পারে। 88 | 89 | নাঈমঃ বেঁচে থাকার জন্য বড় বড় গাড়ি, বাড়ির দরকার কি দরকার আছে? দামি পোশাক, প্রসাধনী, মোবাইল ফোন, ল্যাপটপ এসব কিছুর দরকার আছে? 90 | 91 | তামিমঃ না দরকার নেই। 92 | 93 | নাঈমঃ অবশ্যই দরকার আছে, নাহলে আপনি অনালাইনে ক্লাস করছেন কিভাবে 😂? তবে যদি শুধু বেঁচে থাকায় আমাদের চাহিদা হয় তাহলে মৌলিক চাহিদা পূরণ হলেই আমরা বেঁচে থাকতে পারবো। 94 | 95 | রিয়াঃ জি ভাইয়া। 96 | 97 | নাঈমঃ আবার চিন্তা করেন, একজন খুব গরীব ব্যক্তি সে দিন শেষে যাই করুক তার মৌলিক চাহিদা পূরণ করায় ব্যস্ত। আবার একজন খুব ধনী ব্যক্তিও কিন্তু দিন শেষে তার মৌলিক চাহিদায় পূরণ করছেন। এর সাথে সাথে তিনি আরও অনেক কিছু করছেন, কিন্তু বেঁচে থাকার জন্য তার মৌলিক চাহিদা গুলো পূরণ করতেই হচ্ছে। একজন ধনী ব্যক্তি তার সকাল বেলার নাস্তা ৫ তারা হোটেল খেতে পারেন, আবার একজন গরীব ব্যক্তি তার সকালের নাস্তাটা টং এর দোকানে একটা রুটি আর কলা খেয়েই সেরে নিতে পারেন। দুই জনের সকালের নাস্তা করার উপায়টা ভিন্ন, কিন্তু চাহিদাটা একদম এক, খুদা নিবারণ করা। 98 | 99 | তামিমঃ জি, বুঝতে পারছি। কিন্তু এর সাথে প্রোগ্রামিং এর কি সম্পর্ক ভাইয়া? 100 | 101 | নাঈমঃ সম্পর্ক আছে। আমাদের মৌলিক চাহিদার মতো প্রোগ্রামিং এর ও কিছু ফান্ডামেন্টাল কনসেপ্ট আছে। বিভিন্ন প্রোগ্রামিং ল্যাংগুয়েজ এই কনসেপ্ট গুলোকে বিভিন্ন ভাবে তাদের মতো করে সাজিয়ে গুছিয়ে আমাদের সামনে রিপ্রেসেন্ট করছে। কেউ সরাসরি একটা পলিথিনের কাগজে মুড়ানো রুটি হাতে ধরিয়ে দিচ্ছে, আবার কেউ রুটিটাকে হাজার হাজার টাকা দামের প্লেটে সুন্দর ভাবে পরিপাটি করে ডেকোরেট করে রিপ্রেসেন্ট করছে। কিন্তু সব শেষে দুই ভাবেই আপনি রুটিটা খাচ্ছেন। প্লাস্টিকের কাগজ বা দামি ডেকোরেট করা প্লেট খাচ্ছেন না। নাকি প্যাকেট কেউ কেউ খান? 102 | 103 | রিয়াঃ না ভাইয়া। 104 | 105 | নাঈমঃ না, অনেকে খেতেও পারেন। এতো সাজিয়ে গুছিয়ে দিয়েছে, এমনি এমনি ফেলে দেব? প্যাকেটও একটু খেয়ে দেখি, কেমন স্বাদ? 😂 106 | 107 | তামিমঃ না ভাইয়া 😂। 108 | 109 | নাঈমঃ প্যাকেট যত সুন্দরই হোক না কেন আমরা প্যাকেট খাই না, খাই খাবার। আপনি যখন প্রোগ্রামিং শিখবেন বলে মনস্থির করবেন তখন কিছু দিনের জন্য ধরে নিবেন যে আপনি এখন কমান্ডো ট্রেইনিং নিতে যাচ্ছেন। সহজ সমাধান বলে এখানে কিছু নেই। একবার কষ্ট করে যদি ট্রেইনিংটা সম্পন্ন করতে পারেন তাহলে সারা জীবন আপনাকে আর কষ্ট করতে হবে না, অন্য রকম একটা সম্মান নিয়ে বাঁচতে পারবেন। যখন কেউ কমান্ডো ট্রেইনিং গ্রহণ করে তখন তার মৌলিক চাহিদা পূরণ হওয়াটায় অনেকে বড় ব্যাপার। কেউ কমান্ডো ট্রেইনিং দেখেছেন? জানেন এখানে কি কি হয়? 110 | 111 | তামিমঃ জি ভাইয়া, জানি। 112 | 113 | রিয়াঃ আমি কমান্ডো মুভি দেখেছি। অনেক কষ্ট করা লাগে। 114 | 115 | নাঈমঃ হুমম। আপনাকেও ধরে নিতে হবে যে এই ট্রেইনিং এর সময় আপনার শুধু মৌলিক চাহিদায় পূরণ করতে হবে। মানে প্রোগ্রামিং ফান্ডামেন্টালস ব্যতীত আপনি আর কোনো কিছুই ব্যবহার করতে পারবেন না। 116 | 117 | তামিমঃ 😱 118 | 119 | নাঈমঃ দুনিয়াতে যত সমস্যা আছে যা কম্পিউটার এবং প্রোগ্রামিং ব্যবহার করে সমাধান করা যায়, তার সব কিছুই শুধু মাত্র প্রোগ্রামিং এর ফান্ডামেন্টাল কনসেপ্ট গুলো ব্যবহার করেই সমাধান করা যায়। 120 | 121 | তামিমঃ যে কোনো ল্যাংগুয়েজ ব্যবহার করে সমাধান করা যায়? 122 | 123 | নাঈমঃ ফান্ডামেন্টাল তো সব ল্যাংগুয়েজেই আছে তাই না? এই ক্ষেত্রে প্রোগ্রামিং ল্যাংগুয়েজ আপনাকে মোটেও সাহায্য করবে না। ক্ষুদ্র থেকে ক্ষুদ্রতর সমস্যার সমাধানও আপনাকে মাথা খাটিয়ে বের করতে হবে অল্প কয়েকটা প্রোগ্রামিং কনসেপ্ট ব্যবহার করে। এটাই আপনার ট্রেইনিং, কমান্ড ট্রেইনিং। একজন ভালো সফটওয়্যার সৈনিক হিসেবে গড়ে ওঠার ট্রেইনিং। 124 | 125 | রিয়াঃ ভাইয়া আমি যে কোনো ল্যাংগুয়েজ ব্যবহার করে ট্রেইনিং নিতে পারবো। 126 | 127 | নাঈমঃ জি পারবেন। ফান্ডামেন্টাল কনসেপ্ট গুলোর বাইরে আরও হাজারটা কনসেপ্ট প্রতিটা প্রোগ্রামিং ল্যাংগুয়েজেই আছে, যা আপনাকে পথভ্রষ্ট করার চেষ্টা করবে। কিন্তু আপনাকে কোনো ভাবেই পথভ্রষ্ট হওয়া যাবে না। শুধুমাত্র ফান্ডামেন্টাল কনসেপ্ট ওপরেই ফোকাস দিতে হবে। 128 | 129 | রিয়াঃ ভাইয়া কত দিন এই ট্রেইনিং নিতে হবে? মানে ফান্ডামেন্টাল কনসেপ্ট নিয়ে চিন্তা করতে হবে? 130 | 131 | নাঈমঃ খুব বেশি দিন এই ট্রেইনিং এর দরকার নেই। মাত্র এক মাস যদি আপনি আপনার ব্রেইনকে প্রোগ্রামার হওয়ার এই কমান্ডো ট্রেইনিং দিতে পারেন তাহলেই আপনি একজন ভালো সফটওয়্যার সৈনিক হিসেবে গড়ে ওঠার জন্য প্রস্তুত হয়ে যাবেন। 132 | 133 | তামিমঃ ফান্ডামেন্টাল টকিক্স শেখার পরে কি অন্যান্য টপিক্স শেখা যাবে? 134 | 135 | নাঈমঃ অবশ্যই যাবে, কেন যাবে না? আপনি যদি কাজ করতে চান তাহলে আপনাকে আরও অনেক কিছু শিখতে হবে। কিন্তু আমাদের একটা কমন সমস্যা হচ্ছে আমরা বর্তমান ভুলে ভবিষ্যতের চিন্তায় মগ্ন থাকি। 136 | 137 | রিয়াঃ ভাইয়া, কথাটা ভালো ভাবে বুঝতে পারি নি। 138 | 139 | নাঈমঃ এই যে তামিম সাহেবকে দেখেন, ওনার আগামী এক মাসের প্লান কিন্তু রেডি। আগামী একমাস আপনাদের কাজ প্রোগ্রামিং ফান্ডামেন্টালস নিয়ে চিন্তা করা। কিভাবে এই এক মাসে ফান্ডামেন্টাল কনসেপ্ট বুঝতে হবে সেটা নিয়ে প্লান পরিকল্পনা না করে উনি তারপরের প্লান পরিকল্পনায় ব্যস্ত। 140 | 141 | তামিমঃ না ভাইয়া, আমি সেটা বুঝাতে চাই নি। 142 | 143 | নাঈমঃ আমি জানি আপনি সেটা বোঝাতে চাননি। অনেক উত্তেজনা কাজ করছে ভিতরে। কিন্তু ভাইয়া কিছু কিছু সময় এই উত্তেজনায় আপনার সর্বোচ্চ ক্ষতি বয়ে আনতে পারে। 144 | 145 | তামিমঃ সরি ভাইয়া। 146 | 147 | নাঈমঃ সরি বলার কিছু নেই এখানে। আপনি যদি এই একমাস সঠিক ভাবে পার করতে না পারেন, অ্যাডভানসড বিষয় নিয়ে যখন আপনি কাজ করতে যাবেন, ঘুরে ফিরে আপনাকে এখানেই আবার আসতে হবে। তার থেকে ভালো না যে এক মাস সময় পুরোটা দিয়ে একবারে ভালো করে বিষয় গুলো বুঝেই সামনে আগালেন। 148 | 149 | তামিমঃ জি ভাইয়া। আগামী এক মাস আপনি যা বলবেন তাই করবো। 150 | 151 | নাঈমঃ SL3 Program এ যখন জয়েন করেছেন, তখন তাছাড়া তো আর কোনো উপায়ও নেই। আপনাদের পুরো দায়িত্ব তো এখন আমার। প্রথমে সবার সাথে ফান্ডামেন্টাল শিখি, এর পরে আরও অনেক অ্যাডভান্সড বিষয় বস্তু আছে সেগুলোও শিখবো 152 | 153 | তামিমঃ জি ভাইয়া। 154 | 155 | রিয়াঃ ভাইয়া, ফান্ডামেন্টাল বিষয় গুলো কি কি? 156 | 157 | নাঈমঃ অল্প কয়েকটা কনসেপ্ট, যেগুলো না হলেই না। একটা ক্ষুদ্রতর প্রোগ্রাম লিখতে গেলেও এই বিষয় গুলোই বার বাড় ঘুরে ফিরে সামনে আসে। যেমন - Variables, Operators, Conditions, Loops, Arrays, Functions and Statements. 158 | 159 | তামিমঃ মাত্র এই কয়টা বিষয়? এতো আমি ২ দিনে শিখে ফেলবো। 160 | 161 | নাঈমঃ হুমম, যে কেউ চাইলেই এই বিষয় গুলো ২-৩ দিনে শিখে ফেলতে পারে। কিন্তু সেই শেখাটা যদি কাজে লাগাতে চান তাহলে কোনো দিনও আপনি এত তাড়াতাড়ি শিখতে পারবেন না। 162 | 163 | তামিমঃ ভাইয়া, এই গুলো আমি এর আগে দেখেছি। এর সিনট্যাক্স গুলো আমি অলরেডি জানি। 164 | 165 | নাঈমঃ হা হা, কে বলেছে যে এগুলোর সিনট্যাক্স আপনাকে শিখতে হবে? 166 | 167 | তামিমঃ তাহলে? সিনট্যাক্স না জানলে কোড করবো কিভাবে? 168 | 169 | নাঈমঃ কে বলেছে যে আপনাকে কোড করতে হবে? 170 | 171 | তামিমঃ 😱 ভাইয়া আপনার কথা ঠিক বুঝতে পারছি না। 172 | 173 | নাঈমঃ এই টার্মস গুলোর অন্তর্নিহিত বিষয় বস্তু বুঝতে হবে। কি কেন এবং কিভাবে সেটা খুঁজে বের করতে হবে। বাস্তব জীবনে আপনি কোথায় এই বিষয় গুলো দেখতে পান তা নিয়ে প্রতিটা বিষয়ের ওপরের আর্টিকেল লিখতে হবে। কম করে হলেও ২০ টা করে বাস্তব জীবনের সাথে মিল রেখে উদাহরণ খুঁজে বের করে জমা দিতে হবে। সাথে নিজের উদাহরণ গুলো যুক্তি সহকারে ব্যাখ্যা করিতে হবে। 174 | 175 | তামিমঃ 😱 176 | 177 | রিয়াঃ 😱 178 | 179 | রিয়াঃ এই গুলো কি সবাইকে করতে হবে? 180 | 181 | নাঈমঃ এই কমান্ডো ট্রেইনিং সবার জন্য। নিজেরা নিজেদের ভিতরে দুই জন করে করে পেয়ার প্রোগ্রামিং করবেন। মাঝে মাঝে গ্রুপ আড্ডা দিবেন। কিন্তু কারোর এক্সাম্পলের সাথে কারোর এক্সাম্পল যেন কোনো ভাবেই মিলে না যায়। তাহলে দুই জনের এক্সাম্পলই বাদ। এটা কমান্ডো ট্রেইনিং, প্রোগ্রামার হওয়ার কমান্ডো ট্রেইনিং। রুলস রেগুলেশন একটু বেশিই থাকবে। 182 | 183 | তামিমঃ ভাইয়া আমরা প্রব্লেম সল্ভ করবো না? 184 | 185 | নাঈমঃ তামিম সাহেব আপনার বর্তমান অবস্থা কেমন জানেন? 186 | 187 | তামিমঃ কেমন ভাইয়া? 188 | 189 | নাঈমঃ ধরুন খুব জোরে বাইক চলছে, আপনি বাইকের পিছনে বসে আছেন। ড্রাইভার হঠাত করে জোরে ব্রেক করলো। ড্রাইভার বাইক দুটোই থেমে গেলো। কিন্তু আপনি ড্রাইভারকে ঠেলে বাইরে বের হয়ে যেতে চাইছেন। 190 | 191 | তামিমঃ সরি ভাইয়া। 192 | 193 | নাঈমঃ প্রব্লেম সল্ভ করার থেকে কঠিন কাজ হচ্ছে প্রব্লেম ফাইন্ড করে বের করা। একজন সাধারণ প্রোগ্রামার প্রব্লেম বলে দিলে সেটা সল্ভ করতে পারে। কিন্তু একজন অসাধারণ প্রোগ্রামার যে কোনো জায়গা থেকে প্রব্লেম বের করে নিয়ে আসতে পারে। শুধু নিয়েই আসতে পারে না, তার সল্যুশনও বের করতে পারে। 194 | 195 | তামিমঃ জি ভাইয়া বুঝতে পেরেছি। 196 | 197 | নাঈমঃ কি বুঝতে পেরেছেন? 198 | 199 | তামিমঃ শুধু প্রব্লেম সল্ভার হলে হবে না, প্রব্লেম ফাইন্ডারও হতে হবে। সমাধান করার পূর্বে সমস্যাটাও আমাকেই খুঁজে বের করতে হবে। 200 | 201 | নাঈমঃ ভেরি গুড, আপনি খুব অল্পতেই সব কিছু বুঝতে পারেন। 202 | 203 | নাঈমঃ তাহলে ভাইয়ারা আজকের মতো ক্লাস এখানেই শেষ। আগামী দিন থেকে আমরা প্রোগ্রামিং এর ফান্ডামেন্টাল বিষয় গুলো অন্যরকম ভাবে শেখার চেষ্টা করবো। 204 | 205 | রিয়াঃ ওকে ভাইয়া, বাই। 206 | 207 | তামিমঃ গুড বাই ভাইয়া, ভালো থাকবেন। 208 | 209 | সবাইঃ ভালো থাকবেন ভাইয়া। 210 | 211 | নাঈমঃ আপনারা সবাইও ভালো থাকবেন। বিদায়। 212 | 213 | > প্রতিটা ফান্ডামেন্টাল বিষয় সম্পর্কে আমরা একটা ওভারভিউ দেওয়ার চেষ্টা করেছি। আমাদের বর্ণনা গুলো কোনো প্রোগ্রামিং ল্যাংগুয়েজ কেন্দ্রিক না করে সুডো কোড কেন্দ্রিক করার চেষ্টা করেছি যেন আপনি আপনার পছন্দের প্রোগ্রামিং ল্যাংগুয়েজের সাথে বিষয় গুলোর একটা সম্পর্ক স্থাপন করতে পারেন। আমরা চেষ্টা করেছি গল্পের মাধ্যমে বাস্তব জীবন থেকে প্রোগ্রামিং ফান্ডামেন্টাল বিষয় গুলোকে উপস্থাপন করতে। প্রতিটা লেখায় অনেক বড় বড়, প্রচুর উদাহরণ রয়েছে। যেন আপনারা বোর ফিল না করেন এই জন্যই বিভিন্ন ভাবে আপনাদের কে মজা দেওয়ার চেষ্টা করা হয়েছে। 214 | -------------------------------------------------------------------------------- /src/docs/programming-fundamentals/statements.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Statements vs Expressions' 3 | --- 4 | 5 | > এই পেজ এখনো আপডেট করা হয় নি। এখানে আমাদের পুরাতন রিসার্সের আর্টিকেল দেওয়া আছে। খুব দ্রুতই এই পেজের কাজ সম্পন্ন করে আপডেট করা হবে। দয়া করে একটু ধৈর্য্য ধরুন। 6 | 7 | বাস্তব জীবনে স্টেটমেন্ট আর প্রোগ্রামিং এ স্টেটমেন্টের ভিতরে কোনো পার্থক্য নেই। বাস্তব জীবনে স্টেটমেন্ট বলতে বোঝায় যে কোনো একটা কথা যার একটা মিনিং আছে। যেমন - আমি প্রোগ্রামিং শিখবো। এই কথাটার মাধ্যমে আপনার মনের ভাব সম্পূর্ণ রূপে প্রকাশ পাচ্ছে। এই একটা লাইনের মাধ্যমেই আমরা বুঝতে পারছি আপনি কি বোঝাতে চাচ্ছেন। তাই এটা একটা স্টেটমেন্ট। 8 | 9 | প্রোগ্রামিং এ স্টেটমেন্ট হচ্ছে একটা নির্দিষ্ট লাইন অথবা কোড ব্লক যার একটা মিনিং আছে এবং যা এক্সিকিউট করলে কিছু কিছু না রেসাল্ট আমরা পাবো। যেমন - `Result = NumberA + NumberB` 10 | 11 | ওপরের লাইনটির একটা নির্দিষ্ট মিনিং আছে। আমরা পরিষ্কার ভাবে বুঝতে পারছি যে এখানে NumberA এর সাথে NumberB কে যোগ করা হচ্ছে এবং ফলাফলকে Result নামক ভ্যারিয়েবলের ভিতরে স্টোর করা হচ্ছে। 12 | 13 | প্রোগ্রামিং এ অনেক রকম স্টেটমেন্ট রয়েছে। ভ্যারিয়েবল ডিক্লেয়ার করা মানে নতুন ভ্যারিয়েবল নেওয়া এক ধরনের স্টেটমেন্ট। ভ্যারিয়েবলের মধ্যে ভ্যালু অ্যাসাইন করাও এক ধরনের স্টেটমেন্ট। যোগ বিয়োগ গুণ ভাগ যে কোনো ধরনের অপারেশন ঘটানো হয় স্টেটমেন্টের মাধ্যমে। এরকম আরও এক ধরনের স্টেটমেন্ট রয়েছে যেমন - কন্ডিশনাল স্টেটমেন্টে। 14 | 15 | আমরা প্রোগ্রামিং করে লজিক্যাল সমস্যার সমাধান করে থাকি। আর লজিক নিয়ে কাজ করে কন্ডিশনাল স্টেটমেন্টস। কন্ডিশনাল স্টেটমেন্টস আবার দুই প্রকার, প্রথমটা হচ্ছে কন্ডিশন আর দ্বিতীয়টা হচ্ছে লুপ। 16 | 17 | কন্ডিশন এবং লুপ নিয়ে আমরা বিস্তারিত আলোচনা করেছি পরবর্তী আর্টিকেল গুলোতে। 18 | -------------------------------------------------------------------------------- /src/docs/programming-fundamentals/variables.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Variables' 3 | --- 4 | 5 | ![SL3 Framework - What is Variable](/variable1.jpg) 6 | 7 | ## Declare Vairbale Not War 8 | 9 | > ভ্যারিয়েবল এর বাংলা অর্থ হচ্ছে পরিবর্তনশীল। কিন্তু এই অর্থে যদি আমরা ভ্যারিয়েবলকে বুঝতে চাই তাহলে কোনো ভাবেই আমরা ভ্যারিয়েবলের আসল প্রয়োজনীয়তা বুঝতে পারবো না। ভ্যারিয়েবলের ব্যবহারিক অর্থ হচ্ছে ধারক বা কনটেইনার যা কোনো কিছু ধারণ করে রাখে। এই সম্পূর্ণ ডকুমেন্ট জুড়ে আমরা ভ্যারিয়েবল সম্পর্কে অনেক কিছু জানবো, বুঝবো এবং ভ্যারিয়েবল নিয়ে চিন্তা করা শিখবো। 10 | 11 | ## Start Conversation - 12 | 13 | **প্রেক্ষাপটঃ** রিয়ার মেজাজ খুব গরম, তার Stack Learner এর ভ্যারিয়েবলের টিউটোরিয়াল দেখে মাথা গরম হয়ে গেছে। সে কোনো ভাবেই ভ্যারিয়েবলের সংজ্ঞার সাথে এর কাজ মেলাতে পারছে না। মেজাজ গরম করে সে তামিমকে ফোন দিচ্ছে। যতক্ষণ না তার কাছে ব্যাপারটা পরিষ্কার হচ্ছে ততক্ষণ পর্যন্ত সে ঘুমাতে পারবে না। 14 | 15 | রিয়াঃ তামিম তুই কই? 16 | 17 | তামিমঃ আমি তো পৃথিবীর মায়া কাটিয়ে মহাজাগতিক চিন্তা ভাবনায় ব্যস্ত। পৃথিবীতে আর কোনো ভ্যারিয়েবল পাচ্ছি না, সব খোঁজা শেষ। এবার মহাকাশে আসলাম ভ্যারিয়েবল খুঁজতে। 18 | 19 | রিয়াঃ তুই মহাকাশে ভ্যারিয়েবল খুঁজে বেড়াচ্ছিস, আর আমি ভ্যারিয়েবলের নামের সাথে কাজের কোনো মিল খুঁজে পাচ্ছি না। তুই এখনি গুগল মিটে আসবি, আমাকে ভ্যারিয়েবল বোঝাবি। 20 | 21 | তামিমঃ তুই গুগলে সার্চ কর, আমি এখন মঙ্গলে যাব ভ্যারিয়েবল খুঁজতে। 22 | 23 | রিয়াঃ তামিম, তুই মার খাবি কিন্তু। তোর কি মনে হয় গুগলে না সার্চ করেই তোর মতো ষাঁড়ের কাছে আমি শিখতে এসেছি। গুগলে বলে ভ্যারিয়েবল মানে পরিবর্তনশীল। আর নাঈম ভাইয়ার টিউটোরিয়ালে দেখি ভ্যারিয়েবলের মধ্যে ডেটা স্টোর করছে। কথার সাথে কাজের তো কোনো মিলই খুঁজে পাচ্ছি না। 24 | 25 | তামিমঃ তুই তো এখনো দেখছি তোর রুমের ভিতরেই আছিস। আমি তো অনেক আগেই পৃথিবী ছেড়ে মহাকাশে চলে এসেছি ভ্যারিয়েবল খুঁজতে। 26 | 27 | রিয়াঃ তুই ভাট না বকে আমাকে বোঝা যে ভ্যারিয়েবল কি? 28 | 29 | তামিমঃ আচ্ছা আচ্ছা, আমাকে আগে পৃথিবীতে ল্যান্ড করতে দে। আমি কিছুক্ষণের মধ্যেই তোকে গুগল মিটে কল দিচ্ছি। 30 | 31 | ## What is Variable? 32 | 33 | প্রোগ্রামিং এ ভ্যারিয়েবল বলতে মূলত বোঝায় একটা স্টোরেজ যার মধ্যে আমরা একটা ডেটা স্টোর করে রাখতে পারি। এই ডেটা যে কোনো কিছুই হতে পারে। যেমন একটা নাম্বার, টেক্সট, ইমেজ, ভিডিও বা যে কোনো কিছু যা আমরা কম্পিউটারে কল্পনা করতে পারি। 34 | 35 | ![SL3 Framework - What is Variable](/variable2.jpg) 36 | 37 | ওপরের চিত্রে আপনারা অনেক গুলো ছোট ছোট কৌটা দেখতে পারছেন। প্রতিটা কৌটায় ভিন্ন ভিন্ন রং রয়েছে। এখানে কৌটা গুলো রং কে স্টোর করছে। সেই হিসেবে কৌটা গুলোকে আমরা বলতেই পারি রং এর স্টোরেজ। আর একটু আগেই আমরা জেনেছি স্টোরেজকে প্রোগ্রামিং এর ভাষায় বলে ভ্যারিয়েবল। তাহলে এই প্রতিটা কৌটায় এক একটা ভ্যারিয়েবল, আর রং গুলো হচ্ছে এক একটা ভ্যালু। 38 | 39 | ![SL3 Framework - Variable Syntax](/variable3.png) 40 | 41 | আর একটু ভালো করে লক্ষ্য করলে আপনি দেখতে পাবেন প্রায় প্রতিটা কৌটার চেহারা একই রকম, কিন্তু ধারণ করে রেখেছে ভিন্ন ভিন্ন রং। ধরে নেই আপনার কাছে একটা মাত্র কৌটা রয়েছে। তাই একই সময়ে আপনি ভিন্ন ভিন্ন রং রেখে কাজ করতে পারছেন না। আপনি সিদ্ধান্ত নিলেন প্রথমে লাল রঙের কাজ শেষ করবেন। তারপরে সবুজ রং এর কাজ করবেন এবং সব শেষে হলুদ রং এর কাজ করবেন। একটা মাত্র কোটা ব্যবহার করেই আপনাকে সব গুলো রঙের কাজ শেষ করতে হবে। 42 | 43 | এই ক্ষেত্রে সবার প্রথমে আপনি কৌটার মধ্যে লাল রং রাখলেন। লাল রঙের কাজ শেষ হয়ে গেলে সেই একই কৌটায় সবুজ রং রাখলেন। খেয়াল করুন, একটি মাত্র কৌটা কিন্তু ধারণ করতে পারছে আপনি যা দিবেন তাই। কৌটা কিন্তু কমপ্লেইন করছে না যে আমি লাল রঙের কৌটা, আমার মধ্যে সবুজ রং রাখা যাবে না। তাহলে কি আমরা বলতে পারি না যে কৌটা যায় হোক কৌটার মধ্যে আমরা ভিন্ন ভিন্ন ডেটা রাখতে পারি? আবার তো আমরা এটাও বলতে পারি কৌটার মধ্যে আমরা পরিবর্তনশীল ডেটা রাখতে পারি? তাহলে তো আমরা সহজে এটাই বলতে পারি যে ভ্যারিয়েবল হলো এক ধরনের স্টোরেজ যার মধ্যে যখন খুশি যেভাবে খুশি নতুন নতুন ডেটা রাখতে পারি। আচ্ছা, এই জন্যই মনে হয় ভ্যারিয়েবলকে পরিবর্তনশীল বলা হয়। 44 | 45 | Video About What is Variable 46 | 47 | ## Continue Conversation (1) 48 | 49 | **প্রেক্ষাপটঃ** তামিম বসে বসে ভাবছে কিভাবে সহজে রিয়াকে ভ্যারিয়েবলের কনসেপ্ট বোঝানো যায়। সে জানে যদি একবার রিয়াকে সে ভ্যারিয়েবলের কনসেপ্ট বোঝাতে পারে তাহলে রিয়া খুব সহজেই কোড লিখতে পারবে। কিন্তু সে কোড বোঝাতে চাচ্ছে না, চাচ্ছে রিয়া যেন সব জায়গাতে থেকেই ভ্যারিয়েবল খুঁজে বের করে আনতে পারে। বাস্তব জীবন আর প্রোগ্রামিং তো একই, বাস্তব জীবনে যদি সে ভ্যারিয়েবল খুঁজে বের করতে পারে প্রোগ্রামিং এও সে ভ্যারিয়েবল নিয়ে কাজ করতে পারবে। এই সব ভাবতে ভাবতেই তামিম গুগল মিটে রিয়াকে ফোন দিলো। ফোন ধরেই রিয়া - 50 | 51 | রিয়াঃ এই গাধা, আমাকে ভ্যারিয়েবল বোঝা। 52 | 53 | তামিমঃ বোঝাবো বাবা বোঝাবো, আগে তুই কি করছিস সেটা বল। 54 | 55 | রিয়াঃ কি আর করছি? নিজের মাথার চুল ছিঁড়ছি। তুই ভ্যারিয়েবল বোঝা। 56 | 57 | তামিমঃ আরে নিজের মাথার চুল পড়ে ছিঁড়িস, আগে বল কি করছিস। 58 | 59 | রিয়াঃ ভ্যারিয়েবল বুঝতে না পেরে মেজাজ খুব গরম হয়ে গেছে, তাই কফি খাচ্ছি। 60 | 61 | তামিমঃ আচ্ছা, গুড। কফি কি করে বানালি? 62 | 63 | রিয়াঃ আমার কিন্তু মেজাজ গরম হয়ে যাচ্ছে তামিম। তুই ভ্যারিয়েবল বোঝাবি কি না বল? 64 | 65 | তামিমঃ আরে রেগে যাস কেন? বলনা কফি কি করে বানালি? 66 | 67 | রিয়াঃ কি করে আবার? কফি, চিনি, কফিমেট আর গরম পানি দিয়ে গুলালাম। আর কফি হয়ে গেলো। 68 | 69 | তামিমঃ আচ্ছা কফি হওয়ার পরে তুই কফি খাচ্ছিস কি করে? 70 | 71 | রিয়াঃ কি করে আবার? আমার মাথায় ঢেলে নিয়েছি, গড়ায়ে গড়ায়ে পড়ছে আমি চেটে চেটে খাচ্ছি। তুই আমার মাথা না খেয়ে বলবি ভ্যারিয়েবল কি? 72 | 73 | তামিমঃ বলবো তো, কিন্তু তুই বলতে দিচ্ছিস কই? 74 | 75 | রিয়াঃ কফি ঢেলে কফির মগে রেখেছি আর মগ থেকে খাচ্ছি। 76 | 77 | তামিমঃ তুই তো ভ্যারিয়েবল শিখেই গিয়েছিস। আর অলরেডি ভ্যারিয়েবল ব্যবহার করছিস। 78 | 79 | রিয়াঃ মানে? 80 | 81 | তামিমঃ দেখ, তুই কফির মগে কফিটা রেখেছিস, এখানে মগ হচ্ছে একটা ভ্যারিয়েবল বা স্টোরেজ। আর কফি হচ্ছে ভ্যালু। আবার কফি বানানোর সময় তুই কফি, চিনি, কফিমেট, পানি একটা পাত্রে রেখে গরম করেছিলি। সেটাও একটা স্টোরেজ, মানে ভ্যারিয়েবল। বুঝেছিস? 82 | 83 | রিয়াঃ তার মানে, ভ্যারিয়েবল হল যে কিছু একটা ধারণ করে রাখে? 84 | 85 | তামিমঃ এক্সাক্টলি, এবার তুই তোর পাশে থাকা অনেক ভ্যারিয়েবল দেখতে পারবি। 86 | 87 | রিয়াঃ আর এ গাধা, এই কনসেপ্ট তো আমি Stack Learner এর টিউটোরিয়াল দেখেই বুঝতে পেরেছি। কিন্তু গুগলে সার্চ করে দেখলাম ভ্যারিয়েবলের মিনিং হচ্ছে 'পরিবর্তনশীল'। স্টোরেজের সাথে পরিবর্তনশীলের কি সম্পর্ক সেটাই তো বুঝলাম না। 88 | 89 | তামিমঃ আচ্ছা। তুই এখন তোর কফির মগে কফি খাচ্ছিস, তাই না? 90 | 91 | রিয়াঃ আর কতবার বলবো, খাচ্ছি তো। 92 | 93 | তামিমঃ তুই চাইলেই তোর কফির মগে পানি অথবা চা অথবা কোক খেতে পারিস? 94 | 95 | রিয়াঃ পারবো না কেন? কফির মগ হোক আর যায় হোক, এটা তো মগ। এর মধ্যে যা খুশি তাই রাখতে পারি। 96 | 97 | তামিমঃ এক্সাক্টলি। তোর মগের ভিতরে যে কোনো কিছুই থাকতে পারে, কফিও থাকতে পারে, পানিও থাকতে পারে আবার চাও থাকতে পারে। এর সাথে কি স্টোরেজের, মানে তোর মগের কোনো সম্পর্ক আছে? 98 | 99 | রিয়াঃ না, নেই। 100 | 101 | তামিমঃ মগটা হচ্ছে এখানে ভ্যারিয়েবল, যার মধ্যে তুই এক এক সময় এক এক রকম ডেটা রাখতে পারছিস। মগ একই থাকছে কিন্তু ডেটা পরিবর্তন হচ্ছে। 102 | 103 | রিয়াঃ ওয়েট ওয়েট, আমি বুঝতে পেরেছি। ভ্যারিয়েবল হচ্ছে স্টোরেজ যার মধ্যে আমরা ডেটা রাখতে পারি। কিন্তু বিভিন্ন সময় এই ডেটা পরিবর্তন হতে পারে। আর তাই এর নাম পরিবর্তনশীল। তার মানে, আমার কফি বানানোর পাত্রটাও একটা স্টোরেজ কারণ সেখানে আমরা চাও বানাতে পারি আবার ডিমও সিদ্ধ করতে পারি। চা, কফি, চিনি রাখার কৌটাটাও এক একটা ভ্যারিয়েবল। কারণ একই রকম কৌটার মধ্যেই আমরা কখনো চা রাখছি, কখনো চিনি রাখছি, কখনো কফিমেট রাখছি। আমরা চাইলে অন্য যে কোনো কিছুও রাখতে পারি। ইয়েস, আমি বুঝে গিয়েছি। 104 | 105 | তামিমঃ হ্যাঁ, তুই আসলেই বুঝতে পেরেছিস। এবার তুই তোর চারপাশ থেকে ভ্যারিয়েবল খুঁজে বের কর। আর আমাকে আমার হাদিয়া দে। 106 | 107 | রিয়াঃ আমি দুঃখিত, আমার ভ্যারিয়েবলে কোনো ভ্যালু নেই। 108 | 109 | তামিমঃ মানে? 110 | 111 | রিয়াঃ মানে, আমার ওয়ালেটে কোনো টাকা নেই, যা ফোট। 112 | 113 | তামিমঃ যাচ্ছি, তবে মনে রাখিস এখনি সব শেষ না। কিছুক্ষণ পরে আবার আমাকে তুই ফোন দিবি। তখন দেখে নেব। 114 | 115 | ![SL3 Framework - Lots Of Variables](/variable4.png) 116 | 117 | ## Why Do We Need Variable 118 | 119 | ভ্যারিয়েবলের সংজ্ঞা থেকেই আমরা মোটামোটি বুঝতে পারছি কেন আমাদের ভ্যারিয়েবল দরকার। যে কোন ডেটা স্টোর করে রাখার জন্য আমাদের ভ্যারিয়েবল দরকার। কিন্তু প্রশ্ন হচ্ছে কেন আমরা ডেটা স্টোর করে রাখবো? স্টোর করে না রেখে যদি আমরা সরাসরি ব্যবহার করতে চাই তাহলে কি হবে না? অনেক সময় হবে আবার অনেক সময় হবে না। তবে যদি আমরা স্টোর করে রাখি তাহলে অনেক ক্ষেত্রেই আমাদের কাজ অনেক সহজ হয়ে যাবে। 120 | 121 | খেয়াল করেন, দোকান থেকে চিনি কিনে আনার সময় আমাদের একটা প্যাকেটেই কেন দেয়? সরাসরি হাতে কেন দেয় না? কারণ যদি এটা প্যাকেটে না দেয় তাহলে চিনি গুলো নিচে পরে যাবে এবং ব্যবহার উপযোগী থাকবে না। যখন ১ কেজি চিনি একটা প্যাকেটে আপনি রাখবেন সেটা বহন করা আপনার জন্য সহজ হবে, চিনি গুলো ব্যবহার উপযোগী থাকবে, চিনি গুলো অন্য কোনো কিছুর সাথেই মিশে যাবে না, আবার আমরা প্যাকেট দেখেই বলে দিতে পারবো যে এর মধ্যে চিনি রয়েছে। 122 | 123 | বাসায় এসে চিনিটা আবার একটা ভ্যারিয়েবল থেকে সরিয়ে আর একটা ভ্যারিয়েবলের মধ্যে স্টোর করা হয়। মানে বুঝলেন না? প্যাকেট ভ্যারিয়েবল থেকে সরিয়ে কৌটা ভ্যারিয়েবলের মধ্যে রাখা হয়। প্যাকেট ভ্যারিয়েবলের বিষয়টা তো বোঝা গেলো যে পরিবহনে যেন সুবিধা হয় তাই আমরা প্যাকেট ব্যবহার করছি। কিন্তু কৌটা ভ্যারিয়েবল কেন ব্যবহার করছি? 124 | 125 | চিনি যদি কোনো কৌটায় না রাখা হয় তাহলে সেখানে পিঁপড়া আসতে পারে। চিনির মধ্যে ময়লা পড়তে পারে। আরও অনেক সমস্যা হতে পারে। আবার আমরা যদি চা কফি খাওয়ার উদ্দেশ্যেই চিনি এনে থাকি তাহলে একবারে তো আর এক কেজি চিনি খেয়ে ফেলবো না, তাই না? তাই বার বার যেন আমরা ব্যবহার করতে পারি এই জন্য একটা কৌটা নামক ভ্যারিয়েবলের ভিতরে চিনি গুলোকে স্টোর করে রাখি। এই কৌটার গায়ে বড় করে লিখে রাখা হয় চিনি, এটাকে ভ্যারিয়েবলের নামের সাথে তুলনা করতে পারেন। এই নাম না থাকলে কোনটা চিনি কোনটা লবণ সময়মতো বোঝায় যাবে না। 126 | 127 | Video About Why Do We Need Variable 128 | 129 | ## Continue Conversation (2) 130 | 131 | প্রেক্ষাপটঃ তামিম আজকে স্যালারি পেয়েছে। সেই খুশিতে রিয়া তার বাসায় গিয়ে উপস্থিত, আজকে তামিমকে বেঁটে ট্রিট নিতে হবে। কিন্তু তামিমের বাসায় গিয়ে রিয়া দেখে তামিমের অবস্থা খুবই খারাপ। সে কোনো ভাবেই কোনো কিছুর হিসেব মেলাতে পারছে না। তার কাছে সর্বমোট আছে বিশ হাজার টাকা। মেহেদী তার কাছে পায় ৫০০ টাকা, মাহির পায় ৩০০ টাকা, সাকিব পায় ৫০০ টাকা, বাধন পায় ১০০০ টাকা। তার বাসা ভাড়া এবং খরচ বাবদ লাগবে দশ হাজার টাকা। ফোনের বিল ৩০০ টাকা। সব শেষে তার হাতে আর কতো টাকা থাকবে সে কোনো ভাবেই মেলাতে পারছে না। সে একবার ৫০০ টাকা সাকিবের জন্য রাখছে, আবার ৫০০ টাকা মেহেদীর জন্য রাখছে। পরে গুলিয়ে ফেলছে কোনটা কার জন্য রাখছে। সে পাগল হয়ে যাচ্ছে ছোট্ট একটা হিসেব মেলাতে গিয়ে। 132 | 133 | রিয়াঃ কি করছিস? 134 | 135 | তামিমঃ তুই এখন যা তো, আমার মাথার ঠিক নেই। কোনো ভাবেই হিসেব মিলছে না। 136 | 137 | রিয়াঃ এমনি কি আমি তোকে গাধা বলি? এখানে ভ্যারিয়েবল কই? 138 | 139 | তামিমঃ সব জায়গায় প্রোগ্রামিং টানিস না, এখানে ভ্যারিয়েবল দিয়ে আমি কি করবো? 140 | 141 | রিয়াঃ ওরে আমার প্রোগ্রামার সাহেব, পৃথিবীর সমস্ত ভ্যারিয়েবল খুঁজে মহাকাশে ভ্যারিয়েবল খুঁজতে গেলেই প্রোগ্রামার হওয়া যায় না। আগে নিজের সমস্যা সমাধান করেন প্রোগ্রামিং ব্যবহার করে। 142 | 143 | তামিমঃ কি করে? 144 | 145 | রিয়াঃ যা, তুই আমাকে ভ্যারিয়েবল শিখিয়েছিলি না? তোকে আমি ভ্যারিয়েবল ব্যবহার করেই সমস্যার সমাধানটা করে দেই, এটাই তোর হাদিয়া। একটা খাতা দে - 146 | 147 | ```python 148 | SALARY = 20000 149 | MEHEDI = 500 150 | MAHIR = 300 151 | SAKIB = 500 152 | BADHON = 1000 153 | LIVING_COST = 10000 154 | PHONE_BILL = 300 155 | ``` 156 | 157 | তামিমঃ এটা কি করলি? 158 | 159 | রিয়াঃ একটা সমস্যা থেকে সমাধান পাওয়ার সব থেকে সহজ উপায় হচ্ছে সবার প্রথমেই সমস্ত ভ্যারিয়েবল গুলোকে লিখে রাখা। তাহলে অনেক প্রব্লেম সহজ হয়ে যায়। দেখ ৫০০ টাকা আর ৩০০ টাকা নিয়ে তোর বেশ ঝামেলা হচ্ছিল। কারণ দুই জায়গায় ৫০০ টাকা লাগবে আবার দুই জায়গায় ৩০০ টাকা লাগবে। আমি এখানে ৫০০ টাকার দুইটা নাম দিয়েছি। সাকিব পাবে ৫০০, তাই সাকিব নামের ভ্যারিয়েবল নিয়ে সেখানে রেখেছি ৫০০। মেহেদী পাবে ৫০০ তাই মেহেদী নামের ভ্যারিয়েবল নিয়ে সেখানে রেখেছি ৫০০। 160 | 161 | তামিমঃ তা তো রাখলি, এবার কি করবি? 162 | 163 | রিয়াঃ এবার প্রথমেই ধারের টাকাটা আলাদা করে ফেলবো। তারপরে আসল থেকে ধারটাকে আলাদা করে রাখবো। তাহলে একটা প্যারা কমে যাবে। 164 | 165 | ```python 166 | BORROWED = MEHEDI + MAHIR + SAKIB + BADHON // 2300 TAKA 167 | REMAIN = SALARY - BORROWED // 17700 TAKA 168 | ``` 169 | 170 | রিয়াঃ 2300 টাকা আলাদা করে রাখ। এইটা হচ্ছে তোর ধারের টাকা, এর ভিতরেই সবার টাকা আছে। যখন যাকে দিবি তখন ভ্যারিয়েবল থেকে দেখে নিবি কার ভ্যালু কতো। বুঝেছিস। 171 | 172 | তামিমঃ বুঝতে পেরেছি, এখন তো আমিই সব করতে পারবো। 173 | 174 | রিয়াঃ পারবি, তবে আজকে আমিই করি, তুই পরের মাস থেকে হিসেব করিস। 175 | 176 | ```python 177 | COST = LIVING_COST + PHONE_BILL // 10300 TAKA 178 | REMAIN = REMAIN - COST // 17700 - 10300 = 7400 TAKA 179 | ``` 180 | 181 | রিয়াঃ তোর অন্যান্য খরচ হচ্ছে ১০৩০০ টাকা, ধার শোধ করার পরে ছিল ১৭৭০০ টাকা। তাহলে নতুন করে তোর আছে ১৭৭০০ - ১০৩০০ টাকা, মানে ৭৪০০ টাকা। 182 | 183 | তামিমঃ ওয়াও, আমার কাছে ৭৪০০ টাকা থাকছে? 184 | 185 | রিয়াঃ না, তোর কাছে থাকছে ৬০০০ টাকা। 186 | 187 | তামিমঃ কই? ভালো করে দেখ, ৭৪০০ টাকা থাকছে। 188 | 189 | রিয়াঃ ট্রিট নামের আর একটা ভ্যারিয়েবল নিয়ে তার ভ্যালু সেট কর ১৪০০ টাকা। তোর আগে যা ছিল সেখান থেকে ট্রিটের ভ্যালুটা বিয়োগ করে দেখ ৬০০০ টাকায় থাকবে। 190 | 191 | তামিমঃ 🥶 192 | 193 | ## Examples: 194 | 195 | আমরা ভ্যারিয়েবল সম্পর্কে অনেক কিছু জেনেছি। আমার মনে হয় এখন আশেপাশে তাকালে আমরা অনেক ভ্যারিয়েবল খুঁজেও পাবো। তারপরেও আপনারা যেন আরও অনেক সহজে ভ্যারিয়েবল খুঁজে পেতে পারেন এই জন্য কয়েকটা উদাহরণ এখানে দেওয়া হল - 196 | 197 | **উদাহরণ ১ঃ** আমরা সবাই জানি মাটির নিচে পানি থাকে। সেই পানি আমরা ইলেকট্রিক পাম্প ব্যবহার করে ওপরে তুলে নিয়ে এসে ব্যবহার করি। যেহেতু পানি মাটির নিচেই আছে এবং আমার কাছে পাম্পও আছে তাহলে যখন দরকার তখন আমরা পানি তুলতে পারি। কিন্তু আমরা কি করি? প্রতিদিন সকালে সারা দিনের জন্য একবারে পানি তুলে ছাঁদের ওপরে রাখা কোনো একটা পানির ট্যাংকে জমা করে রাখি। সারা দিন সেই ট্যাংক থেকে পানি নিয়ে বাকি কাজ করে থাকি। কারণ একটা জায়গায় পানি বেশি করে জমা করে রাখলে আমরা বার বার সেটা ব্যবহার করতে পারি। প্রতিবার আমাদের পাম্প চালু করে ইলেক্ট্রিসিটি অপচয় করতে হচ্ছে না। আবার কোনো কারণে যদি ইলেক্ট্রিসিটি নাও থাকে তার পরেও আমাদের পানির অভাব বোধ করতে হচ্ছে না, কারণ আমাদের কাছে আগে থেকেই পানি জমা করে রাখা আছে। এখানে পানির ট্যাংক হচ্ছে একটা ভ্যারিয়েবল এবং পানি হচ্ছে তার ভ্যালু। 198 | 199 | ![SL3 Framework - Example 1 Water Pump](/variable5.jpg) 200 | 201 | **উদাহরণ ২ঃ** মাসের শুরুতেই অনেক পরিবার তাদের সারা মাসের বাজার একবারে করে নিয়ে আসে। সেখানে চাল, ডাল, বিভিন্ন রকম মশলা, চিনি সব কিছুই থাকে। মশলা গুলো বাজার থেকে যখন কেনা হয় তখন সেটা একটা প্যাকেটের ভিতরে থাকে। একটা বাচ্চাও বুঝতে পারবে যে কেন মশলা গুলো প্যাকেটের ভিতরে রাখা হয়। কারণ প্যাকেটে না রাখলে এটা অন্য কিছুর সাথে মিশে যাবে এবং ব্যবহার করা যাবে না। এখানে প্যাকেট হচ্ছে একটা ভ্যারিয়েবল। এর পরে বাসায় আসার পরে মা আবার প্রতিটা মশলাকে তার জন্য বরাদ্দকৃত কৌটায় ঢেলে রাখে। ভিন্ন ভিন্ন মশলার জন্য ভিন্ন ভিন্ন কৌটা। প্রতিটা কৌটার গায়ে তার নাম লেখা থাকে। যখন রান্নার সময় কোনো মশলা দরকার হয় নির্দিষ্ট কৌটা থেকে নির্দিষ্ট পরিমাণ মশলা নিয়ে ব্যবহার করা হয়। বাকিটা আবার কৌটাতেয় পরে থাকে। এখানে কৌটা হচ্ছে ভ্যারিয়েবল আর মশলা হচ্ছে ভ্যালু। 202 | 203 | ![SL3 Framework - Example 2 Masala Box](/variable6.jpg) 204 | 205 | প্রোগ্রামিং এর ক্ষেত্রে সব থেকে গুরুত্বপূর্ণ ভূমিকা পালন করে এই ভ্যারিয়েবল। কারণ অন্যান্য টপিক গুলো আপনি স্কিপ করেও একটা সমস্যা সমাধান করতে পারেন, বিভিন্ন সমস্যার ক্ষেত্রে সেই রকম সুযোগ রয়েছে। কিন্তু এই রকম সমস্যা খুঁজে পাওয়ায় মুশকিল যেখানে ভ্যারিয়েবল ছাড়া সমস্যাটা সমাধান করা সম্ভব। একটা সমস্যা যখন আপনি দেখবেন যা আপনাকে প্রোগ্রামিং ব্যবহার করে সমাধান করতে হবে, আপনার প্রথম কাজ হবে সমস্যার ভিতরে কি কি ডেটা রয়েছে খুঁজে বের করা, আর কয়টা ভ্যারিয়েবল লাগবে সেটা খুঁজে বের করা। 206 | 207 | ## Variable & Data Types 208 | 209 | ভ্যারিয়েবলের সাথে আর একটা বিষয় ওতপ্রোত ভাবে জড়িত। সেটা হচ্ছে ডেটা টাইপ। ডেটা টাইপ সম্পর্কে কিছু বলার পূর্বে ডেটা সম্পর্কে কিছু বলার দরকার। আসলে কম্পিউটারে যা স্টোর করে রাখা সম্ভব সবই ডেটা। কম্পিউটার মূলত স্টোর করে রাখতে পারে বাইনারি নাম্বার, মানে ০ এবং ১। কিন্তু এই ডেটা দিয়ে মানুষ কাজ করতে কম্ফোর্ট ফিল করে না। এই জন্য আমরা আমাদের মতো করে কিছু ডেটা টাইপ বানিয়ে নিয়েছি এবং কম্পিউটারকে বোকা বানিয়ে সেগুলোও বিভিন্ন ভাবে কম্পিউটারকে দিয়ে স্টোর করাচ্ছি। মূলত তিন টাইপের ডেটাই আমরা কম্পিউটারে স্টোর করে রাখি। সেগুলো হলো নাম্বার, টেক্সট এবং বুলিয়ান (True, False)। এর বাইরে আরও অসংখ্য ধরনের ডেটা আছে, কিন্তু শেষমেস আমরা এই তিনটা ডেটা নিয়েই সরাসরি কাজ করি। 210 | 211 | ডেটা টাইপের বিষয়টা আসলে প্রোগ্রামিং ফান্ডামেন্টাল টপিক্সের অন্তর্ভুক্ত কোনো বিষয় না। কারণ এটা পুরোপুরিই ল্যাংগুয়েজ নির্ভর একটা কনসেপ্ট। কোনো ল্যাংগুয়েজে আপনাকে ডেটা টাইপ বলেই দিতে হবে না যেমন জাভাস্ক্রিপ্ট, পাইথন। আবার কিছু কিছু ল্যাংগুয়েজে আপনাকে ভ্যারিয়েবল নেওয়ার পূর্বেই বলে দিতে হবে যে এখানে আপনি কি রাখতে চান যেমন সি, সি++, জাভা। অনেকটা আমাদের উদাহরণ ২ এর মতো। হলুদের গুঁড়ার কৌটাতে আপনাকে হলুদের গুঁড়ায় রাখতে হবে, আবার মরিচের গুঁড়ার কৌটাতে আপনাকে মরিচই রাখতে হবে। চিনির কৌটায় চিনি এবং লবণের কৌটায় লবণই রাখতে হবে। এর বাইরে কিছু করলেই কম্পিউটার আপনাকে বড় সড় একটা ইরোর মেসেজ দিয়ে দেবে। 212 | 213 | ভিন্ন ভিন্ন ডেটা টাইপ থাকার আর একটা বড় কারণ হলো সাইজ। ধরেন আপনি তেল কিনতে দোকানে গেলেন। আপনার ১০০ গ্রাম তেল দরকার, তাই আপনি একটা ছোট বোতল নিয়ে গেলেন যেন দোকানদার আপনার বোতলের ভিতরে তেলটা দিতে পারে। এখন ১০০ গ্রাম তেল আনার জন্য আপনি কি ৫ লিটারের একটা বোতল নিয়ে যাবেন? অবশ্যই না। আপনি ১০০ গ্রাম, ২০০ গ্রাম, ২৫০ গ্রাম যদি তাও না থাকে সর্বোচ্চ ৫০০ গ্রামের একটা বোতল নিয়ে যাবেন ১০০ গ্রাম তেল আনার জন্য। ডেটা টাইপের মাধ্যমে আমরা একটা ভ্যারিয়েবলের সাইজ বলে দেই। যদি আমি অল্প ডেটা স্টোর করতে চাই, তাহলে ছোট সাইজের ভ্যারিয়েবল নিবো। যদি আমার বড় সাইজের ডেটা স্টোর করতে হয় তাহলে আমি বড় সাইজের ভ্যারিয়েবল নিবো। 214 | 215 | আপনার পছন্দের ল্যাংগুয়েজে যদি ডেটা টাইপ না থাকে তাহলে এখন ডেটা টাইপ নিয়ে চিন্তাই করার দরকার নেই। আর যদি থাকে তাহলে int এবং double টাইপ ডেটা নিয়েই কাজ করেন। এর বাইরে ইনিশিয়াল লেভেলে আর অন্য কোনো ডেটা টাইপে যাওয়ার দরকার নেই। 216 | 217 | ![SL3 Framework - Data Types](/variable7.png) 218 | 219 | ## Continue Conversation (3) 220 | 221 | **প্রেক্ষাপটঃ** তামিম বাসার সামনে একটা দোকানে দাঁড়িয়ে ছোট্ট একটা প্যাকেট থেকে চানাচুর খাচ্ছে। হঠাত রিয়া দোকানে আসলো কিছু জিনিসপত্র কিনতে। 222 | 223 | রিয়াঃ তামিম, তোর সাথে দেখা হয়ে খুব ভালো হল রে ভাই। এখন তুই আমাকে ডেটা টাইপ বোঝা। 224 | 225 | তামিমঃ কি? ডেটা টাইপ? ডেটা টাইপ কেন? তুই না SL3 এর কমান্ড ট্রেইনিং করছিস? আর এই লিস্টে কি ডেটা টাইপ আছে? 226 | 227 | রিয়াঃ না নেই, কিন্তু আমি তো সি প্রোগ্রামিং নিয়ে কাজ করছি। এখানে তো ভ্যারিয়েবল ডিফাইন করতে গেলে প্রথমেই ডেটা টাইপ বলে দিতে হয়। আমি বুঝতেছি না, একই ধরনের ডেটার জন্য এক গাদা ভিন্ন ভিন্ন ডেটা টাইপ। কিন্তু কেন? 228 | 229 | তামিমঃ শোন ডেটা টাইপ হচ্ছে ল্যাংগুয়েজ স্পেসিফিক একটা বিষয়। এক একটা ল্যাংগুয়েজে এক এক রকম ডেটা টাইপ আছে। সব ল্যাংগুয়েজের ডেটা টাইপ এক না। 230 | 231 | রিয়াঃ তাহলে কি আমি ডেটা টাইপ শিখবো না? 232 | 233 | তামিমঃ অবশ্যই শিখতে হবে। তবে এটা প্রোগ্রামিং ফান্ডামেন্টালস এর মতো প্রতিটা ল্যাংগুয়েজের জন্য একই না, যখন যেই ল্যাংগুয়েজে কাজ করবি তখন সেই ল্যাংগুয়েজের ডেটা টাইপ কি কি আছে সেটা একবার দেখে নিবি। 234 | 235 | রিয়াঃ প্রতিটা ল্যাংগুয়েজের ডেটা টাইপ ভিন্ন ভিন্ন সেটা বুঝতে পারলাম। তাহলে ভিন্ন ভিন্ন ল্যাংগুয়েজে কি ডেটা টাইপের কনসেপ্টও ভিন্ন ভিন্ন? 236 | 237 | তামিমঃ না, প্রতিটা ল্যাংগুয়েজেই ডেটা টাইপের মেইন কনসেপ্ট এক। আচ্ছা বলতো ভ্যারিয়েবল কি জিনিস? দেখি তোর মনে আছে কি না? 238 | 239 | রিয়াঃ ভ্যারিয়েবল তো স্টোরেজ। মনে থাকবে না কেন? 240 | 241 | তামিমঃ ভ্যারিয়েবল মানে স্টোরেজ। কিন্তু তোকে যদি জিজ্ঞাসা করি কত বড় স্টোরেজ? 242 | 243 | রিয়াঃ কত বড় স্টোরেজ মানে? যত বড় লাগবে তত বড় স্টোরেজ। 244 | 245 | তামিমঃ কিন্তু কম্পিউটার কি করে বুঝবে কতো বড় লাগবে? আচ্ছা, তুই তো অনেক কফি খাস তাই না? 246 | 247 | রিয়াঃ হ্যাঁ খাই। 248 | 249 | তামিমঃ এখন কফি খাওয়ার জন্য কি তুই তোর বাড়ির পানির ট্যাংক ব্যবহার করিস? 250 | 251 | রিয়াঃ তুই কি পাগল? ট্যাংক কেন ব্যবহার করবো? এক কাপ কফি রাখার জন্য এত বড় ট্যাংক কোনো পাগলও ব্যবহার করবে না। 252 | 253 | তামিমঃ এক্সাক্টলি। ছোটো ডেটা রাখার জন্য আমাদের দরকার ছোটো স্টোরেজ, আর বড় ডেটা রাখার জন্য দরকার বড় স্টোরেজ। খেয়াল কর, আমি এখন যে চানাচুরটা খাচ্ছি তার দাম ১০ টাকা, সব থেকে ছোট প্যাকেট। এর থেকে বড় প্যাকেটের দাম ৩৫ টাকা, তার থেকে বড় প্যাকেটের দাম ৭৫ টাকা, তার থেকে বড় প্যাকেটের দাম ১০০ টাকা। এখন ১০০ টাকার চানাচুরের প্যাকেটে যদি আমি ১০ টাকার চানাচুর রাখি তাহলে কাস্টমার মারবে না? 254 | 255 | রিয়াঃ মারবে তো বটেই, কাস্টমার কি তোর মতো গাধা নাকি? 256 | 257 | তামিমঃ ডেটা টাইপ ব্যবহার করে আমরা কম্পিউটারকে বলে দিতে পারি একটা ভ্যারিয়েবলের ভিতরে কতো জায়গা রাখতে হবে। 258 | 259 | রিয়াঃ ওহ আচ্ছা, এই বার বুঝতে পেরেছি। প্রতিটা ডেটা টাইপের সাথে কি জন্য লেখা ছিল ১ বাইট, ২ বাইট বা ৪ বাইট। তার মানে ওই টাইপের ভ্যারিয়েবল যদি আমি নেই সে এত বড় সাইজের ডেটা স্টোর করে রাখতে পারবে। তাই না? 260 | 261 | তামিমঃ তুই তো ইনটেলিজেন্ট। সব কিছুই সহজে বুঝে যাস। 262 | 263 | রিয়াঃ আর তুই গাধা। 264 | 265 | তামিমঃ দে, এবার আমার চানাচুরের বিল তুই দিবি। চানাচুর দিয়েই তুই ডেটা টাইপ বুঝেছিস। 266 | 267 | রিয়াঃ 👿 268 | 269 | Video About Data Type and Data Type Size 270 | 271 | ## Find Out Variables: 272 | 273 | তামিমের আম্মু তামিমকে বাজারে পাঠিয়েছেন ১০০০ টাকার একটা নোট হাতে দিয়ে। সাথে একটা লিস্টও ধরিয়ে দিয়েছেন। ১লিটার তেল, ২ কেজি আটা, ১ কেজি চিনি, ২ হালি ডিম এবং ১ ডজন কলা কিনতে হবে। তামিম বাজারে গিয়ে দেখে ১ লিটার তেলের দাম ১০০ টাকা, ১ কেজি আটার দাম ৪০ টাকা, ১ কেজি চিনি ৬০ টাকা, ১ হালি ডিমের দাম ৩৮ টাকা এবং ১ ডজন কলার দাম ৬০ টাকা। সে সব গুলো বাজার নিয়ে একটা ব্যাগের ভিতরে রাখলো। তারপরে হিসেব করে দোকানদার কে টাকা দিলো এবং ফিরতি টাকা ফেরত নিয়ে বাসায় চলে আসলো। 274 | 275 | ওপরের গল্প থেকে খুঁজে বের করতে হবে এখানে কি কি ভ্যারিয়েবল আছে এবং কত টাকা ফেরত আসলো। 276 | 277 | ভ্যারিয়েবল গুলো খুঁজে বের করে প্রোগ্রামটা আমি সুডো কোডে লিখতে পারি - 278 | 279 | ```python 280 | TOTAL_MONEY = 1000 281 | 282 | OIL = 1 283 | FLOUR = 2 284 | SUGAR = 1 285 | EGG = 2 286 | BANANA = 1 287 | 288 | OIL_PRICE = 100 * 1 = 100 289 | FLOUR_PRICE = 40 * 2 = 80 290 | SUGAR_PRICE = 60 * 1 = 60 291 | EGG_PRICE = 38 * 2 = 76 292 | BANANA_PRICE = 60 * 1 = 60 293 | 294 | TOTAL_COST = OIL_PRICE + FLOUR_PRICE + SUGAR_PRICE + EGG_PRICE + BANANA_PRICE 295 | TOTAL_COST = 376 296 | 297 | REMAIN = TOTAL_MONEY - TOTAL_COST = 1000 - 376 = 624 298 | 299 | NOTE: Here Bag is Also Variable, Because Tamim Uses Bag to Hold All The Comodities 300 | ``` 301 | 302 | ## Ending Conversation - 303 | 304 | তামিমঃ কি রে কি করিস? 305 | 306 | রিয়াঃ মঙ্গলের ভ্যারিয়েবল খোঁজা শেষ, এবার ভাবছি পৃথিবীতে নেমে আসবো। মাটির নিচের ভ্যারিয়েবল গুলো একটু খুঁজে দেখতে হবে। 307 | 308 | তামিমঃ অনেক হয়েছে ভ্যারিয়েবল খোঁজা। আর ভ্যারিয়েবল খুঁজতে হবে না। এত ভ্যারিয়েবল দিয়ে করবি কি? 309 | 310 | রিয়াঃ কি করবো মানে? জিনিসপত্র রাখবো। 311 | 312 | তামিমঃ শুধু জিনিসপত্র রাখলেই চলবে? কোনো অপারেশন ঘটাতে হবে না? 313 | 314 | রিয়াঃ অপারেশন? সেটা কি? 315 | 316 | তামিমঃ বুঝবে বাছা বুঝবে, প্রোগ্রামিং ফান্ডামেন্টালস এর পরের ডকুমেন্টে তো নাঈম ভাই আমাদেরকে এটাই শেখাবেন। 317 | 318 | রিয়াঃ তাই নাকি? আমি প্রস্তুত। চল পরের ডকুমেন্ট পড়া শুরু করি। 319 | -------------------------------------------------------------------------------- /src/docs/pseudo-code.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Pseudo Code' 3 | --- 4 | 5 | রাফি ক্লাস এইটে পড়ে। তার বন্ধু বান্ধব সবারই ফেসবুকে একাউন্ট আছে। কিন্তু তার এখনো কোনো একাউন্ট নেই। আবার সে জানেও না ফেসবুকে কিভাবে একাউন্ট তৈরি করতে হয়। তাই সে তার বন্ধু রাকিবকে একটা বার্গার খাওয়ানোর শর্তে রাজি করলো, যেন সে তাকে একটা একাউন্ট তৈরি করে দেয়। 6 | 7 | শুক্রবার দিন। স্কুল ছুটি, তাই রাফি সকাল সকাল রাকিবের বাসায় গিয়ে উপস্থিত। রাকিব তখনো নাস্তা করছিলো। রাকিবের আম্মু রাফিকে জিজ্ঞাসা করলো সে কফি খাবে কি না? রাফি হ্যাঁ সূচক সম্বোধন দিলো। ডাইনিং টেবিলের পাশেই একটা কফি মেকার রাখা রয়েছে। রাফি এর আগে কখনো কফি মেকার দিয়ে বানানো কফি খায় নি। সে জানেও না কফি মেকার কিভাবে কাজ করে। রাকিবের আম্মু কফি বানানোর জন্য প্রস্তুত হচ্ছে, আর রাফি সেই দিকে লক্ষ্য করছে যে কিভাবে আন্টি কফি বানায়। 8 | 9 | রাকিবের আম্মু সবার প্রথমে দেখে নিলো যে মেশিনে কফি, চিনি, কফিমেট ঠিক মতো আছে কি না। সব কিছু ঠিক মতোই ছিল। তারপরে তিনি কফি মেকারে কিছুটা পানি দিলেন। এর পরে কফি মেকারের মেইন সুইচ অন করলেন। একটা কাপ নিয়ে এসে কফি মেকারের সামনের দিকে রাখলেন। এবং একটা বাটন প্রেস করলেন। বাহ কফি তৈরি শেষ। রাফি বেশ খুশি হল, কারণ এখন সে নিজেও কফি মেকারে কফি বানানো শিখে গেছে। 10 | 11 | রাকিবের নাস্তা শেষ হলে তারা দুজন মিলে রাকিবের ঘরে চলে গেলো। গিয়েই রাকিব তার কম্পিউটার ওপেন করলো। এবার রাকিব রাফিকে জিজ্ঞাসা করলো যে তার কোনো ইমেইল একাউন্ট আছে কি না? রাফির কোনো ইমেইল একাউন্ট ছিল না। রাফি খুব উত্তেজিত, তার একটা ফেসবুক একাউন্ট হবে এই উত্তেজনার থেকে বেশি উত্তেজনা কাজ করছে কিভাবে ফেসবুক একাউন্ট তৈরি করতে হয় সেই প্রসেসটা আজকে সে শিখে ফেলবে। সে একটা খাতা এবং কলম সাথে করেই নিয়ে এসেছে। 12 | 13 | রাকিব প্রথমেই [gmail.com](http://gmail.com) এ ভিসিট করলো এবং সেখান থেকে Create New Account বাটনে প্রেস করলো। 14 | 15 | এর পরে একটা ফর্ম সামনে আসলো, রাকিব রাফির কাছে থেকে শুনে সমস্ত ইনফরমেশন দিয়ে ফর্মটা পূরণ করলো। ব্যাস, ইমেইল একাউন্ট তৈরি। 16 | 17 | এবার রাকিব Facebook এর ওয়েবসাইটে ভিসিট করলো। সেখানে ভিসিট করার সাথে সাথেই তারা হাতের ডান পাশে একটা ফর্ম দেখতে পেল। সেই ফর্মে প্রয়োজনীয় সমস্ত ইনফরমেশন দিয়ে ফর্মটা সাবমিট করলো। 18 | 19 | ফর্ম সাবমিট করার পরে, তার নতুন ইমেইলে একটা ভ্যারিফিকেশন ইমেইল চলে গেলো। রাকিব ইমেইল থেকে ভ্যারিকেশন ইমেইলটা ওপেন করে অ্যাকাউন্টটি ভ্যারিভাই করে দিলো। 20 | 21 | ব্যাস, একাউন্ট তৈরি শেষ। এবার দুই জন মিলে তাদের প্রোফাইল সাজাতে বসে পড়লো। এর মাঝে রাফি সমস্ত পদক্ষেপ গুলো সুন্দর করে ধাপে ধাপে তার খাতায় লিখে রাখলো। সে আজকে অনেক খুশি, কারণ সে জানে কিভাবে ইমেইল একাউন্ট তৈরি করতে হয়, কিভাবে ফেসবুক একাউন্ট তৈরি করতে হয়, কিভাবে ফেসবুক অ্যাকাউন্ট ভ্যারিফাই করতে হয় এবং কিভাবে কফি মেশিনে কফি তৈরি করতে হয়। 22 | 23 | আমরা প্রতিদিন যেই কাজ গুলো করি, সেই কাজ গুলো করার পূর্বে অবশ্যই আমরা চিন্তা করি কিভাবে কাজটা শেষ করা যায়? কয়টা এবং কি কি স্টেপ লাগবে কাজটা শেষ করতে? আমাদের দৈনন্দিন কাজ গুলোর ক্ষেত্রে আমরা শুধু স্টেপ গুলো চিন্তা করি এবং সেই অনুযায়ী কাজ করি। কিন্তু হঠাত করে যদি এমন কোনো কাজ চলে আসে যেটা একটু বড়, যেখানে কাজ অনেক বেশি তখন কিন্তু আমরা কাজ এবং কাজটা কিভাবে করবো সব কিছুই নোট করে রাখি। 24 | 25 | সামনের মাসে টুটুলের বোনের বিয়ে এবং বিয়েতে পাঁচশত মানুষকে দাওয়াত দিতে হবে। এই পাঁচশত মানুষের নাম মনে রাখা নিশ্চয় মুখের কথা হবে না। এত মানুষের ভিতরে কিছু মানুষের জন্য এখানে থাকার ব্যবস্থা করতে হবে। কিছু মানুষের জন্য উপহার কিনতে হবে। খাবার দাবারের ব্যবস্থা করতে হবে। বিয়ে, গায়ে হলুদের পোশাক এবং অন্যান্য সব কিছু কিনতে হবে। এবং এই এত এত কাজ সব কিছু সঠিক ভাবে একটার পরে একটা করতে হবে। যদি একটা কাজও ভুল হয় তাহলে বিয়ে বাড়িতে মারামারি বেধে যাবে। বিয়ে বাড়িতে মারামারি আমাদের দেশের জন্য খুবই সাধারণ একটা বিষয়। 26 | 27 | তাই এত বড় কাজ করার জন্য অবশ্যই পুরো কাজটা কিভাবে করবে, কে কি কাজ করবে, কখন কোন কাজটা করতে হবে পুরো বিষয়টার একটা লিখিত রূপ থাকতে হবে এবং সেই অনুযায়ী কাজ করতে হবে? আর আমরা কে কি করবো, কখন করবো, কিভাবে করবো এইগুলো ধাপে ধাপে নিজের ভাষায় সাবলীল ভাবে লিখে রাখার নামই হচ্ছে সুডো কোড। ওপরের উদাহরণে রাফি যে কফি বানানো শিখলো বা সে ফেসবুক একাউন্ট তৈরির প্রসেস গুলো তার মতো করে খাতায় লিখে রাখলো এটা হচ্ছে সুডো কোড। 28 | 29 | একটা ১০ তলা বিউল্ডিং তৈরির ক্ষেত্রে কয়েক লক্ষ ইটের প্রয়োজন হয়। প্রতিটা ইট একটার পরে একটা সুন্দর ভাবে বসানোর মাধ্যমে তৈরি হয় একটা বিউল্ডিং। একটা সফটওয়্যার কিন্তু একই রকম। একটা বড় সফটওয়্যারের মধ্যে এই রকম হাজার হাজার ছোট ছোট ফাংশনালিটিস থাকে। প্রতিটা ফাংশনালিটিস আলাদা আলাদা করে তৈরি করে পরে সব গুলো ফাংশনালিটিস এক সাথে জোড়া লাগানোর মাধ্যমে একটা বড় সফটওয়্যার তৈরি হয়। প্রথমেই যদি আমরা বিরাট বড় একটা সফটওয়্যার নিয়ে চিন্তা করি তাহলে কোনো দিনও ওই সফটওয়্যার তৈরি করা সম্ভব না। 30 | 31 | প্রতিটা ফাংশন আবার কিভাবে ইমপ্লিমেন্ট করবো বা কিভাবে সল্ভ করবো সেটা নিয়েও আমাদের বিস্তর চিন্তা করতে হবে। ফাংশন গুলো কি কাজ করবে সেটা ভালো ভাবে বুঝতে হবে এবং সেই অনুযায়ী সমাধান গুলো খাতায় লিখে রাখতে হবে। মনে করা যাক আমরা একটা সাধারণ যোগ বিয়োগ গুণ ভাগ করার একটা ক্যালকুলেটর বানাবো। সেই ক্ষেত্রে আমাদের কি করতে হবে? 32 | 33 | প্রথমে আমরা যোগ করার সিস্টেমটা খাতায় লিখে ফেলি। এরপরে একে একে বাকি গুলোও লিখে ফেলবো - 34 | 35 | **যোগ করুনঃ** 36 | 37 | > ১। A এবং B এর মধ্যে দুইটা সংখ্যা থাকবে 38 | 39 | > ২। ইউজার A এবং B ইনপুট দিবে 40 | 41 | > ৩। Result এর মধ্যে A এবং B এর যোগফল থাকবে 42 | 43 | > ৪। ইউজারকে Result এর ভ্যালু শো করবো। 44 | 45 | **বিয়োগ করুনঃ** 46 | 47 | > ১। A এবং B এর মধ্যে দুইটা সংখ্যা থাকবে 48 | 49 | > ২। ইউজার A এবং B ইনপুট দিবে 50 | 51 | > ৩। Result এর মধ্যে A এবং B এর বিয়োগফল থাকবে 52 | 53 | > ৪। ইউজারকে Result এর ভ্যালু শো করবো। 54 | 55 | **গুণ করুনঃ** 56 | 57 | > ১। A এবং B এর মধ্যে দুইটা সংখ্যা থাকবে 58 | 59 | > ২। ইউজার A এবং B ইনপুট দিবে 60 | 61 | > ৩। Result এর মধ্যে A এবং B এর গুণফল থাকবে 62 | 63 | > ৪। ইউজারকে Result এর ভ্যালু শো করবো। 64 | 65 | **ভাগ করুনঃ** 66 | 67 | > ১। A এবং B এর মধ্যে দুইটা সংখ্যা থাকবে 68 | 69 | > ২। ইউজার A এবং B ইনপুট দিবে 70 | 71 | > ৩। Result এর মধ্যে A এবং B এর ভাগফল থাকবে 72 | 73 | > ৪। ইউজারকে Result এর ভ্যালু শো করবো। 74 | 75 | যোগ বিয়োগ গুণ ভাগ করার সিস্টেমটা হয়তো অনেক সহজ। আমরা ছোটবেলা থেকে এর সাথে পরিচিত। তাই এত ছোট প্রব্লেমকে আমাদের হয়ত খাতায় লিখতে হবে না। কিন্তু আপনি খেয়াল করলেই দেখতে পারবেন এই ছোট্ট কাজটি করার জন্যও আমাদের কত গুলো স্টেপ পার করতে হয় কাঙ্ক্ষিত আউটপুট পাওয়ার জন্য। যদি আমাদের ফাংশনটা বা সমস্যাটা আরও জটিল হয়? যদি অনেক লজিক্যাল কাজ করতে হয়? সেক্ষেত্রে যে কেউই গুলিয়ে ফেলতে পারে যে কোন স্টেপের পরে কোন স্টেপটা নিয়ে কাজ করতে হবে। তাই সব থেকে ভালো হয় একটা সমস্যা কম্পিউটারে সল্ভ বা কোড করার পূর্বে খাতা কলমে তার স্টেপ গুলো ভালো করে লিখে ফেললে। তাহলে কোড করার সময় ভুল হওয়ার সম্ভাবনা অনেক কমে যায় এবং কোডে যাওয়ার পূর্বেই সমস্যাটার সমাধান হয়ে যায়। আর এভাবে খাতায় নিজের মনের মাধুরী মিশিয়ে সমস্যা সমাধানের সম্ভাব্য স্টেপ গুলো বর্ণনা করে লেখাকেই বলা হয় সুডো কোড (Pseudo Code)। 76 | 77 | সুডো কোড লেখার কিছু স্ট্যান্ডার্ড আছে। বিভিন্ন ল্যাংগুয়েজ ভেদে সুডো কোড লেখার ধরণ ভিন্ন হতে পারে। কিন্তু আমি আপনাদের বলবো কোনো স্ট্যান্ডার্ড ফলো করার দরকার নেই। যখন আপনি শিখছেন তখন নিজের ভাষায়, নিজের মতো করে, নিজে বুঝতে পারেন এমন করে লেখেন। এই ক্ষেত্রে আমার সাজেশন হচ্ছে সিম্বোলিক ওয়ার্ড বাদ দিয়ে কি করতে হবে সেটা সরাসরি বর্ণনা করে লিখে রাখেন। পরে সিম্বোলিক ভাবেও আপনি লিখতে পারবেন, কিন্তু শুরুর দিকে যদি আপনি বর্ণনা করে লেখেন তাহলে বিষয়বস্তু গুলো আপনার কাছে আরও অনেক বেশি পরিষ্কার হয়ে যাবে। 78 | 79 | একজন বিগিনার প্রোগ্রামিং শেখার শুরুতেই কোনো একটা প্রোগ্রামিং ল্যাংগুয়েজ নিয়ে চিন্তা শুরু করে। তার সিনট্যাক্স নিয়ে তার মাথার চুল ছিঁড়তে থাকে। কিন্তু প্রোগ্রামিং ল্যাংগুয়েজ শেখার থেকে অনেক বেশি গুরুত্বপূর্ণ বিষয় হচ্ছে প্রোগ্রামিং কনসেপ্ট বুঝতে পারা। সে কি সমস্যার সমাধান দিচ্ছে সেটা ভালো ভাবে বুঝতে পারা। সুডো কোড কোনো ল্যাংগুয়েজ স্পেসিফিক বিষয় না। আপনি আপনার ভাষায় একটা সমস্যার সমাধান করবেন। সেই সমাধানটা পরবর্তীতে আপনি যেকোনো প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করেই কোডে রূপান্তর করতে পারবেন। আসলে প্রোগ্রামিং ল্যাংগুয়েজ আপনার চিন্তা এবং কম্পিউটারের মধ্যে সম্পর্ক স্থাপন করা ব্যতীত কোনো কাজই করছে না। যা করার আপনিই করছেন। 80 | 81 | এই বিষয়ে আমরা একটা ভিডিও তৈরি করেছি পরবর্তী সেকশনে, যেখানে আমরা দেখিয়েছি একই সুডো কোড ব্যবহার করে পাঁচটা ভিন্ন ভিন্ন প্রোগ্রামিং ল্যাংগুয়েজে কিভাবে কোড করা যায়। সেখানে হয়ত ভাষাগত খুব অল্প পরিবর্তনই আপনি লক্ষ্য করতে পারবেন। আপনি যদি সুডো কোড দিয়ে একটা সমস্যার সমাধান করা শিখতে পারেন তাহলে সেই নলেজ টা হবে আপনার অ্যাবস্ট্রাক্ট নলেজ। কিন্তু আপনি সুডো কোড পারেন না, পাইথন এর লাইব্রেরী ফাংশন কল করে একটা সমস্যার সমাধান করতে পারেন। আপনি যখনই একই সমস্যা অন্য প্রোগ্রামিং ল্যাংগুয়েজে সল্ভ করার চিন্তা করবেন তখন আর পারবেন না, কারণ সেই প্রোগ্রামিং ল্যাংগুয়েজে এই রকম কোনো লাইব্রেরী ফাংশন নাও থাকতে পারে। 82 | 83 | তাই ল্যাংগুয়েজ স্পেসিফিক ভাবে চিন্তা না করে আপনার ব্রেইনকে উন্নত করুন যেন সে সমস্যাটা বুঝতে পারে এবং সেই অনুযায়ী সমাধান তৈরি করতে শেখে। কোনো ল্যাংগুয়েজ কেন্দ্রিক চিন্তা করলে কোনো লাভ তো হবেই না, বরঞ্চ আপনি ক্ষতির সম্মুখীন হবেন। কারণ আপনি ধীরে ধীরে ওই প্রোগ্রামিং ল্যাংগুয়েজের প্রতি ডিপেন্ডেন্ট হয়ে যাবেন। ওই ল্যাংগুয়েজ ব্যাতীত আপনি কোনো কিছু চিন্তাও করতে পারবেন না। যদি কোনো কোড কেন্দ্রিক চিন্তা করতেই হয় তাহলে সেটা হবে সুডো কোড। কারণ একমাত্র সুডো কোডে একটা সমস্যা সমাধান করতে পারলেই আপনি একজন প্রোগ্রামার এবং এই সমাধানটা যেকোনো ল্যাংগুয়েজে কোড করা যাবে। আর শুধু, যে কোনো একটা ল্যাংগুয়েজে কোড করতে পারলে আপনি একজন কোডার। 84 | -------------------------------------------------------------------------------- /src/docs/purpose-of-computer.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'The Purpose of Computer' 3 | --- 4 | 5 | কম্পিউটারের কাজটা যে আসলে কি, মানে কম্পিউটার আমরা কেন ব্যবহার করি সেই প্রশ্নের উত্তর যদি আমাদের জানা থাকে তাহলেই প্রোগ্রামার হওয়ার যাত্রাটা অনেক সহজ হয়ে যায়। নিচের অংশ পড়ার আগে আপনি নিজে একটু চিন্তা করুন তো যে কম্পিউটারের আসল কাজ কি? 6 | 7 | কম্পিউটারের কাজ কি এই প্রশ্ন আমি অনেকের কাছেই করেছি। এই প্রশ্নের সহজ এবং প্রেডিক্টেবল একটা উত্তর আমি সবার কাছ থেকেই পেয়েছি। আর সেটা হচ্ছে প্রব্লেম সল্ভ করা। আপনি ও নিশ্চয় এখন এই কথাটিই ভাবছিলেন। যদি এটা ভেবে থাকেন তাহলে আপনার কাছে আমার দ্বিতীয় প্রশ্ন হচ্ছে কম্পিউটার কি প্রব্লেম সল্ভ করে থাকে? 8 | 9 | যখন আমি দ্বিতীয় প্রশ্নটি করি তখন মানুষ সাধারণত একটু ঘাবড়ে যায় এবং কিছুটা সময় নিয়ে বলে বাস্তব জীবনের সমস্যা গুলো কম্পিউটার সমাধান করে থাকে। বাস্তব জীবনের কোন সমস্যা কম্পিউটার সমাধান করে? আমার বাসার ওয়াশরুমের পানির পাইপটা নষ্ট হয়ে গেছে, কম্পিউটারকি এটা সেরে দিতে পারবে? গত দুই দিন ধরে আমি আমার চার্জারটা খুঁজে পাচ্ছি না, কম্পিউটারকি সেটা খুঁজে দিতে পারবে? নাকি আমার রুমের লাইটটা ঠিক করে দিতে পারবে? দুই দিন ধরে জ্বলছে আর নিভছে। 10 | 11 | না, এই সমস্যা গুলোর কোনোটাই কম্পিউটার সমাধান করতে পারবে না। তাহলে কম্পিউটার কিভাবে বাস্তব জীবনের সমস্যার সমাধান করতে পারলো? 12 | 13 | ![SL3 Framework - Computer is Dumb](/computer-is-dumb.jpg) 14 | 15 | যদি সহজ কথায় কম্পিউটারের কাজটা বোঝাতে চাই তাহলে বলতে হবে এর কাজ ডেটা স্টোর করা, প্রয়োজনের সময় দ্রুত ডেটা খুঁজে বের করে আমাদের দেখানো এবং প্রয়োজন শেষে ডেটাটা রিমুভ করে দেওয়া। এর বাইরে কম্পিউটারের আর কোনো কাজ নেই। এখানে ডেটা বলতে যেকোনো ইনফরমেশনকে বোঝানো হচ্ছে। আমরা সারা মাস কিভাবে চলবো মাসের শুরুতেই খাতা কলমে একটা বাজেট তৈরি করি। এই বাজেট খাতা কলমে না করে আমরা কম্পিউটারে করতে পারি। তাহলে হিসেব নিকেশে অনেক সহজ হবে যাবে। খাতা কলমে কাজ করলে যেমন একটা ইনফরমেশন খুঁজে বের করতে অনেক সমস্যা হবে, ঠিক একই সাথে হিসেব নিকেশ গুলোও আমাদের করতে হবে। কম্পিউটারের ক্ষেত্রে এই কাজ গুলো আমাদের করতেই হবে না, বরঞ্চ সমস্ত কাজ অনেক দ্রুত হবে। 16 | 17 | একটা সময় আমরা ডিকশনারি কিনতাম ইংরেজি ভাষার অনুবাদ খোঁজার জন্য। একটা শব্দের অনুবাদ খুঁজতে অনেক বেশি সময় লাগতো। কিন্তু এখন আমরা শব্দটা লিখে সার্চ করলেই মুহুর্তের মধ্যে তার অনুবাদ আমাদের সামনে চলে আসে। 18 | 19 | ছোট বেলা থেকে দেখে আসছি ক্লাস টিচার ক্লাসরুমে প্রবেশ করেই উপস্থিতির খাতাটা খুলে বসেন। এবং কলম দিয়ে টিক চিহ্ন দিয়ে কে এসেছে আর কে আসেনি মার্ক ডাউন করেন। যদি বছর শেষে একজন স্পেসিফিক ছাত্রের রোল নাম্বার দিয়ে তাকে খুঁজে বের করতে বলা হয় সে কয় দিন আসে নি, এক্স্যাক্ট কোন কোন তারিখে আসেনি তাহলেই কিন্তু টিচারের মাথা খারাপ হয়ে যাবে। কিন্তু এই কাজটাই কম্পিউটার তুড়ি মেরে করে দিতে পারবে। 20 | 21 | আপনি সিম্পল গুগল সার্চ থেকে শুরু করে যত বড় অ্যাপলিকেশন বা গেম আপনার আশে পাশে দেখতে পারছেন বা কল্পনা করতে পারছেন, একটু ভালো করে খেয়াল করলেই বুঝতে পারবেন সব জায়গাতেই কিছু ডেটা আমরা ক্রিয়েট করছি, প্রয়োজন শেষে ডিলিট করছি অথবা ডেটাটা ব্যবহার করছি। 22 | 23 | পাবজি এর মতো বিরাট বড় গেমের কথায় চিন্তা করা যাক। এখানে কি হচ্ছে? মুহুর্তের ভিতরে হাজার হাজার ডেটা ক্রিয়েট হচ্ছে এবং ডিলিট হচ্ছে। এখানে আপনাকে যেই ক্যারেক্টার দ্বারা রিপ্রেসেন্ট করা হচ্ছে সেটা একটা ডেটা। এই ক্যারেক্টারের কাছে যেই গানটা আছে সেটা একটা ডেটা, গান থেকে যখন বুলেট বের হচ্ছে সেটা একটা ডেটা, বুলেট বের হওয়ার পরে যেই শব্দটা হচ্ছে সেটা একটা ডেটা, বুলেটটা এক জায়গা থেকে আর একজায়গায় চলে যাচ্ছে মানে ডেটার পজিশন আপডেট হচ্ছে। এবং গুলিটা যখন এনিমির গায়ে লাগছে মানে, এনিমির পজিশন এবং বুলেটের পজিশন সেম হচ্ছে তখন এনিমি ডেটাটা ডেস্ট্রয় হয়ে যাচ্ছে। ডেটা ডেটা আর ডেটা। 24 | 25 | ফেসবুকে প্রতিদিন পোস্ট, স্টোরি, ভিডিও, লাইক, কমেন্টের বন্যা। হাজার হাজার শেয়ার করে যে কাউকে ভাইরাল বানায়ে দিচ্ছেন। এই পোস্ট, স্টোরি, ভিডিও, লাইক, কমেন্ট, শেয়ার সব কিছুই হচ্ছে ডেটা। ফেসবুকের মতো এত বড় কোম্পানি শুধু বসে বসে ডেটা ম্যানিপুলেট করছে আর ডেটা ম্যানেজ করছে। 26 | 27 | আমাদের কম্পিউটার তো একটা বোকা, গাধা। আমার লেখা প্রথম বইটাতে আমি বলেছিলাম এটা একটা বোকা বাক্স। আমরা যে কম্পিউটারকে ব্যবহার করে এত কিছু করছি তা যদি এই বোকা বাক্সটা জানতো তাহলে নিশ্চিত আমাদের কাছে ট্যাক্স চেয়ে বসত। কারণ আমরা কম্পিউটার ব্যবহার করে যাই করি না কেন কম্পিউটারের কাছে শুধু এত টুকু ইনফরমেশনই যাচ্ছে যে কারেন্ট পাস করবো নাকি করবো না। মানে ০ এবং ১। 28 | 29 | যেহেতু কম্পিউটারের কাজ শুধু ডেটা স্টোর করা, প্রয়োজনের সময় ডেটা রিট্রাইভ করা এবং প্রয়োজন না হলে ডেটা ডেস্ট্রয় করে দেওয়া, তাই আমরা যা কিছু কাগজে কলমে রিপ্রেসেন্ট করতে পারি ঠিক তাই আমরা কম্পিউটারে রিপ্রেসেন্ট করতে পারবো। একবারে প্রথম দিনেই আপনি পাবজি বানানোর চিন্তা করেন না, তাহলে ব্যাপারটা একটু বেশি বেশি হয়ে যাবে। সহজ কাজ দিয়ে শুরু করেন। যেমন বাজারের লিস্ট, ক্লাসের সকল শিক্ষার্থীদের ইনফরমেশন, ফোন ডিরেক্টরি, সিম্পল নোটস, আপনার টাকা পয়সার হিসেব এই ধরনের যেই কাজ গুলো আপনি কাগজে কলমে করেন সেই কাজ গুলোকে প্রথমে কম্পিউটারে রূপান্তরের চেষ্টা করতে হবে। ছোট ছোট এই কাজগুলো করতে থাকলে কিছু দিন পরে আপনি বড় বড় সমস্যারও সমাধান করতে পারবেন। 30 | -------------------------------------------------------------------------------- /src/docs/purpose-of-programming.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'The Purpose of Computer Programming' 3 | --- 4 | 5 | প্রোগ্রামিং হচ্ছে একটা মাইন্ডসেট, যেই মাইন্ডসেট একটা সমস্যা সমাধানের জন্য কাজ করবে। সমস্যা সমাধানের সব থেকে ভালো উপায় হচ্ছে খাতা কলম। খাতা কলমে আপনি যা খুশি হিজিবিজি আঁকবেন, লিখবেন এবং সমস্যার সমাধান করবেন। কিন্তু এই সমাধান তো কম্পিউটার বুঝবে না। কম্পিউটারকে বোঝানোর জন্য কম্পিউটারের ভাষা লাগবে। আর এই ভাষাকেই আমরা বলছি প্রোগ্রামিং ল্যাংগুয়েজ। 6 | 7 | কম্পিউটার একটা মেশিন, যাকে আমরা বলি বোকা বাক্স। এই বোকা বাক্সের আবার ভাষা? ভাবতেই কেমন অবাক লাগছে না? সেটা নাকি আবার মানুষের শিখতে হবে এই বোকা বাক্সকে কনট্রোল করতে চাইলে? আসলে সত্যি কথা বলতে কম্পিউটারের কোনো ভাষা নেই। আমরা মানুষেরা আমাদের সুবিধার জন্য কম্পিউটারের জন্য ভাষা তৈরি করেছি। আপনি বিশ্বাস করেন আর নাই করেন কম্পিউটার কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজই বোঝে না। কারণ কম্পিউটারতো কয়েকটা হার্ডওয়্যার মানে কয়েকটা ইলেক্ট্রনিক্স এর পার্টসপত্র দিয়ে তৈরি। তার আবার ভাষা থাকে কেমনে? তার থাকলে তো থাকার কথা কারেন্ট বা ইলেক্ট্রিসিটি। 8 | 9 | একদম সত্যি কথা। কম্পিউটার যেহেতু কয়েকটা ইলেক্ট্রনিক্স এর টুকরা তাই এর ভিতরে শুধু আছে কয়েক কোটি সুইচ। এই সুইচ গুলো কারেন্ট পাস করবে কি করবে না তাই আমরা বলে দেই প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। 10 | 11 | তাই নাকি? কিভাবে? 12 | 13 | কম্পিউটার শুধুমাত্র বুঝতে পারে দুইটা জিনিস, শূন্য এবং এক। শূন্য মানে হচ্ছে সুইচ অফ, কারেন্ট যাবে না। আর এক মানে হচ্ছে সুইচ অন, কারেন্ট যাবে। আপনি কম্পিউটারে যায় করেন না কেন কম্পিউটার এই শূন্য এবং ১ দ্বারাই বুঝতে পারে কম্পিউটার স্ক্রিনে কি প্রদর্শন করতে হবে। আপনি যখন কম্পিউটারকে বলছেন ১০০ প্রিন্ট করতে, কম্পিউটার কিন্তু আপনার এই নাম্বার বুঝতে পারছে না, সে বুঝতে পারছে '1100100' যাকে বলা হয় বাইনারি নাম্বার। আপনি কম্পিউটারকে প্রিন্ট করতে বলছেন 'Stack Learner', সে বুঝতে পারছে '01010011 01110100 01100001 01100011 01101011 00100000 01001100 01100101 01100001 01110010 01101110 01100101 01110010' 14 | 15 | ![SL3 Framework - Binary World](/binary-world.jpg) 16 | 17 | আমরা কম্পিউটারে যা দেখি বা শুনি সব কিছুরই একটা বাইনারি রিপ্রেসেন্টেশন আছে। আর কম্পিউটার শুধু বুঝতে পারে এই বাইনারি নাম্বার। কিন্তু সরাসরি বাইনারি নাম্বার নিয়ে কাজ করাটা অনেক জটিল এবং সময় সাপেক্ষ একটা বিষয়। তাই কিছু বুদ্ধিমান প্রোগ্রামার বুদ্ধি করে একটা কম্পাইলার বা ট্রান্সলেটর বানালো যা মানুষের ভাষার কাছিকাছি কিছু সাংকেতিক কোড বুঝতে পারে এবং সেই অনুযায়ী কম্পিউটারের জন্য বাইনারি কোড লিখতে পারে। একে আমরা বলতে পারি কম্পাইলার বা ইন্টারপ্রেটার। 18 | 19 | ব্যাপারটা অনেকটা এরকম যে চাইনা থেকে কিছু মানুষ বাংলাদেশে এসেছে ব্যবসার উদ্দেশ্যে। কিন্তু তারা তো এদেশের ভাষা কিছুই বোঝে না। আবার আমরা বাঙালিরা তো চাইনার ভাষা কিছুই বুঝি না। এই জন্য তারা এমন একজন হায়ার করলো যে দুই দেশের ভাষায় বুঝতে পারে। সহজ কথায় একজন ট্রান্সলেটর হায়ার করলেন ভাষা ট্রান্সলেট করার জন্য। কম্পাইলার বা ইন্টারপ্রেটারও এক্স্যাক্ট সেম কাজটাই করছে। 20 | 21 | তারমানে কম্পিউটার এবং আমাদের মাঝের মধ্যম সত্তা হচ্ছে কম্পাইলার। আমরা যা বলি সে কম্পিউটারকে তার ভাষায় সুন্দর করে বোঝায়ে বলে। কিন্তু কম্পাইলার হচ্ছে অশিক্ষিত এবং চরম ঘাড় ত্যাড়া প্রকৃতির। আমাদের আশে পাশে প্রচুর কম্পাইলার আছে। যেমন সি এর কম্পাইলার, জাভার কম্পাইলার, পাইথনের কম্পাইলার (ইন্টারপ্রেটার), জাভাস্ক্রিপ্টের কম্পাইলার। প্রতিটা কম্পাইলারই বোকা এবং ঘাড় ত্যাড়া। কেউ কারোর ভাষা বোঝে না। এমনকি নিজের ভাষার বাইরে একটা সেমিকোলনও যদি আপনি ভুল বলেন সে ত্যাড়ামি শুরু করবে। নিজের মাথা খাটিয়ে একটা কাজও করবে না। যত টুকু সে জানে ততটুকুর বাইরে একটা স্পেসও সে নিজে বসাবে না। এই যে কম্পাইলের যে জ্ঞান বা রুল সেট যা কম্পাইলার মেনে কম্পিউটারের সাথে কথা বলে এটাই প্রোগ্রামিং ল্যাংগুয়েজ। এটা অনেকটা মানুষের ভাষার মতো, আবার অনেকটা দেখতে হিজিবিজি কোড ওয়ার্ডের মতো। 22 | 23 | আমরা আমাদের বেশির ভাগ সময় ব্যয় করি প্রোগ্রামিং ল্যাংগুয়েজ শেখার পিছনে। বেশির ভাগ ক্ষেত্রেই আমরা এর আসল উদ্দেশ্য বুঝতে পারি না। শিখেই যায় শিখেই যায় এবং শিখেই যায়। কোথায় থামতে হবে, কত টুকু শিখতে হবে, কিভাবে বাস্তব প্রয়োগ করতে হবে তার কোনো কিছুই আমরা জানি না। কিন্তু শিখতে থাকি। যার ফলে কিছু দিন পরে আবার বিরক্তির শিকার হই। 24 | 25 | আপনারা এখন নিশ্চয় জানেন আমাদের কম্পিউটার মহাশয়ের কাজ কি? ডেটা স্টোর করা, প্রয়োজনের সময় ডেটা খুঁজে বের করা আর প্রয়োজন না হলে ডেটা রিমুভ করে দেওয়া। আপনারা নিশ্চয় এটাও এখন জানেন প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে আমরা কম্পিউটারকে কন্ট্রোল করে থাকি। তাহলে কম্পিউটার যা করতে পারবে তার বাইরে তো আর আমরা তাকে দিয়ে বেশি কিছু করাতে পারবো না তাই না? তাই যদি হয়ে থাকে তাহলে আলটিমেটলি প্রোগ্রামিং ল্যাংগুয়েজ এরও কাজ হচ্ছে ডেটা স্টোর করা, প্রয়োজনের সময় ডেটা রিট্রাইভ করা এবং প্রয়োজন শেষে ডেটা ডিলিট করার কমান্ড কম্পিউটারকে দেওয়া। মানে কম্পিউটারের কাজটাই আমরা করছি প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। এর বাইরে দুনিয়াতে কম্পিউটার বা প্রোগ্রামিং ল্যাংগুয়েজের আর কোনো কাজ নেই। আপনারা হয়তো ডেটা স্ট্রাকচার, অ্যালগোরিদমের নাম শুনেছেন। অনেক ভারি ভারি টার্ম, নাম শুনলেই কিছুটা ভয় লাগে। এই এত বড় বড় জিনিসও এসেছে সুন্দর করে ডেটাকে গুছিয়ে রাখার জন্য, প্রয়োজনের সময় সহজে এবং দ্রুত ডেটা খুঁজে বের করার জন্য। 26 | 27 | ![SL3 Framework - Data is Everything](/data-is-everything.jpg) 28 | 29 | আসলে প্রোগ্রামিং ল্যাংগুয়েজ কত টুকু শেখা উচিত, কত টুকু শিখতে পারলে বাস্তব প্রয়োগ করা যাবে তার এক্স্যাক্ট ইনফরমেশন দেওয়াটা খুব কঠিন। আপনি যত বেশি জানবেন, তত আপনার জন্য ভালো। কিন্তু প্রয়োগ না বুঝতে পেরে ল্যাংগুয়েজের অনেক কিছু শিখে ফেলেও কোনো লাভ নেই। আবার প্রয়োগ করার জন্য প্রোগ্রামিং ল্যাংগুয়েজ এর খুব বেশি জ্ঞানেরও দরকার নেই, শুধু প্রোগ্রামিং ফান্ডামেন্টালস জানলেই আপনি অনেক কিছু করতে পারবেন। তবে সেই ক্ষেত্রে আপনার ব্রেইনে একটু বেশি প্রেশার দিতে হবে। 30 | 31 | **প্রোগ্রামিং ফান্ডামেন্টালসঃ** প্রোগ্রামিং ফান্ডামেন্টালস বলতে মূলত সেই টপিক্স গুলোকে বোঝানো হয় যেগুলো ব্যবহার করে আপনি খাতা কলমে একটা সমস্যার সমাধান করতে পারেন। এবং এই ফান্ডামেন্টাল টপিক্স গুলো প্রতিটা প্রোগ্রামিং ল্যাংগুয়েজেই এক। যেমনঃ ভ্যারিয়েবল, ডেটা টাইপ, অপারেটরস, কন্ডিশন, লুপ, অ্যারে, ফাংশন। বাস্তব জগতের যেকোনো সমস্যা সমাধান করার জন্য এই কয়েকটা টপিক্সই যথেষ্ট। এই টপিক্স গুলো শেখার পরে আপনি যদি কোনো অনলাইন জাজে প্রব্লেম সল্ভিং শুরু করেন তাহলেই আপনার বেস ধীরে ধীরে গড়া শুরু হবে। 32 | 33 | **অবজেক্ট অরিয়েন্টেড প্রোগ্রামিংঃ** যখন আপনি প্রোগ্রামিং এবং প্রব্লেম সল্ভিং এর সাথে মোটামুটি কম্ফর্টেবল হয়ে যাবেন তখন আপনার কাজ হচ্ছে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং নিয়ে স্টাডি করা। ছোটো খাটো সমস্যা সমাধানের জন্য মূলত অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ব্যবহৃত হয় না। বাস্তব জীবনের বড় বড় সমস্যা গুলো যখন আমরা সমাধান করার কথা চিন্তা করি তখন আমাদের দরকার হয় অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং। এবং এটা শুধুমাত্র একটা থিওরি। কোনো প্রোগ্রামিং ল্যাংগুয়েজের ফিচার না। 34 | 35 | **ফাংশনাল প্রোগ্রামিংঃ** ফাংশনাল প্রোগ্রামিং টা আর একটু অ্যাডভান্সড কনসেপ্ট। সব ল্যাংগুয়েজ আবার এই প্যারাডাইমটা সাপোর্টও করে না। তবে ফাংশনাল প্রোগ্রামিং বর্তমান বিশ্বে ব্যাপক প্রভাব ফেলছে। তাই সময় সুযোগ বুঝে এর কনসেপ্ট বুঝে নেওয়াটাই বুদ্ধিমানের কাজ। 36 | 37 | প্রোগ্রামিং ল্যাংগুয়েজের কাজ মূলত কম্পিউটারের সাথে কথা বলা, আমরা যেই সমস্যাটার সমাধান খাতা কলমে করলাম তা কম্পিউটারের কাছে পৌঁছে দেওয়া। ডেটা ক্রিয়েট করে কম্পিউটারে স্টোর করা, প্রয়োজনের সময় ডেটা রিট্রাইভ করা এবং প্রয়োজন না থাকলে ডেটা রিমুভ করে দেওয়া। এত এত হিজিবিজি সব ফাংশনালিটিস শুধু মাত্র এই কাজেই ব্যবহৃত হচ্ছে। 38 | -------------------------------------------------------------------------------- /src/docs/why-do-we-learn-programming.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Why Do We Learn Programming' 3 | --- 4 | 5 | আপনাদের জন্য শেষ মোটিভেশন, কমান্ডো ট্রেইনিং এ যাওয়ার পূর্বে সর্বশেষ মোটিভেশন। SL3 Framework টা আপনারা প্রোগ্রামিং এর কমান্ডো ট্রেইনিং হিসেবে নিবেন কি না আমরা জানি না। তবে যারা আমাদের SL3 Program এ জয়েন করবেন বলে সিদ্ধান্ত নিয়েছেন তাদের ক্ষেত্রে প্রোগ্রামিং এর কমান্ডো ট্রেইনিংই হবে সেই বিষয়ে নিশ্চিত থাকতে পারেন। 6 | 7 | ![SL3 Framework - Programming Means High Salary](/high-salary.jpg) 8 | 9 | আমরা কেন প্রোগ্রামিং ল্যাংগুয়েজ শিখবো কথাটা লিখে গুগলে সার্চ করলে আপনি অসংখ্য আর্টিকেল বা ভিডিও পেয়ে যাবেন। নতুন করে কিছু বলার আছে বলে আমার মনে হয় না। তারপরেও কোনো কিছু না লুকিয়ে কিছু সত্য মোটিভেশন আমরা দিতেই পারি। 10 | 11 | **High Salary:** প্রোগ্রামারদের স্যালারি অন্যান্য জব টাইটেল থেকে সাধারণত একটু বেশিই হয়। যদি আপনি একজন ভালো মাপের প্রোগ্রামার হতে পারেন দেশের ভিতরেও আপনার স্যালারি ছয় ডিজিটে হয়ে যাবে খুব সহজেই। আর যদি বাইরের দেশের কথা চিন্তা করেন তাহলে বাৎসরিক কোটি টাকাও ইনকাম করা কোনো বিষয় না। তবে প্রথমেই স্যালারির দিকে তাকিয়ে এক লাফে কম্পিউটারের সামনে বসে পরার দরকার নেই। ভালো প্রোগ্রামার হওয়ার জন্য দরকার প্রচুর পরিশ্রম করার মানুষিকতা, ধৈর্য্য এবং অধ্যাবসায়। সাধারণ মানুষের মতো জীবন যাপন করে আপনি একজন সাধারণ প্রোগ্রামারও হতে পারবেন না। এক্সট্রা অর্ডিনারি ভাবে চেষ্টা করতে হবে। 12 | 13 | **Certificate is not Mandatory:** একজন ভালো প্রোগ্রামারের ডিমান্ড এত বেশি যে এই ক্ষেত্রে আপনার এডুকেশনাল ব্যাকগ্রাউন্ডও কোনো মানে রাখে না। আপনি ভার্সিটিতে পড়েছেন কি পড়েন নি সেটা কোনো বিষয়ই না। একজন প্রোগ্রামারের একমাত্র পরিচয় হচ্ছে সে একজন প্রোগ্রামার। তবে শুধুমাত্র খুব ভালো প্রোগ্রামারের ক্ষেত্রেই কথাটা প্রযোজ্য। 14 | 15 | **Work From Anywhere:** প্রোগ্রামিং আপনি যে কোনো জায়গায় বসেই করতে পারবেন। কোনো স্পেশিয়াল সেটআপ এর দরকার হবে না। অফিস এনভারনমেন্ট এর দরকার হবে না। শুধুমাত্র কাছে একটা ল্যাপটপ থাকলেই হয়ে গেলো। শুধুমাত্র একটা ল্যাপটপ, আর আপনি লাইফ চেঞ্জিং স্টার্টাপ তৈরি করতে পারবেন। লাইফ চেঞ্জিং সফটওয়্যার তৈরি করতে পারবেন। কোটি কোটি টাকার যন্ত্রপাতির দরকার নেই। এখানে আপনিই সব, আপনার ব্রেইনে থাকা প্রোগ্রামিং এর জ্ঞানই সব। আর এই জ্ঞান কি করতে পারে তা আমরা গুগল, ফেসবুককে দেখলেই কল্পনা করতে পারি। 16 | 17 | আরও অসংখ্য কারণ আপনাকে দেওয়া যেতে পারে যে কারণে আপনি প্রোগ্রামিং শিখতে পারেন। আমার মনে হয় প্রত্যেকেরই প্রথম কারণ থাকে টাকা। আর তারপরে ভালোবাসা। প্রোগ্রামিং যদি কেউ একবার বুঝতে পারে তাহলে সে প্রোগ্রামিং কে ভালো না বেসে থাকতেই পারবে না। তবে আবারও একটা কথা আপনাকে মনে করিয়ে দেই কম্পিউটার এবং কম্পিউটার প্রোগ্রামিং এ আপনি যায় করেন না আলটিমেটলি সবই ডেটা। শুধুমাত্র এই ডেটাকে কেন্দ্র করে অসংখ্য জব টাইটেল ক্রিয়েট হয়েছে। চলুন ওয়েব ডেভেলপমেন্ট রিলেটেড কিছু জব টাইটেল দেখে আসা যাক একটু মজা করে - 18 | 19 | > সারা বিশ্বে কোটি কোটি ওয়েবসাইট, অ্যাপলিকেশন, মাল্টি বিলিয়ন ডলারের টেক কোম্পানি। সবাই কোনো না কোনো ভাবে একটা জিনিসই সেল করছে, আর সেটা হচ্ছে ডেটা। ব্লগ সাইট থেকে শুরু করে সোশ্যাল মিডিয়া, নিউজ পোর্টাল থেকে শুরু করে ইকমার্স যেখানেই আপনি ভিসিট করেন না কেন, চোখের সামনে যা আসবে সবই ডেটা। আর এই ডেটা আপনাকে সঠিক ভাবে, সুন্দর ভাবে দেখানোর জন্য এসেছে হাজার হাজার প্রোগ্রামিং ল্যাংগুয়েজ, হাজার হাজার টেকনোলজি - তৈরি হয়েছে অসংখ্য জব টাইটেল।

একটা সিম্পল ওয়েব সাইটে ভিসিট করলে আমরা সাধারণত চারটা জিনিস দেখতে পাই। ১ HTML - যার কাজ ডেটার একটা স্ট্রাকচার তৈরি করা। ২ CSS - যে স্ট্রাকচারড ডেটার স্টাইল তৈরি করে। ৩ JavaScript - যার কাজ ডেটার সাথে ইন্টারেক্ট করা। আর ৪ নাম্বার যা দেখি সেটা হচ্ছে একচ্যুয়াল ডেটা।

ডেটাকে আপনার সামনে কিভাবে তুলে ধরলে আপনি খুশি হবেন তা নিয়ে রিসার্স করার জন্য আছে UI/UX ডিজাইনারস। আর ডেটাকে একটা স্ট্রাকচার দেওয়ার জন্য আছে ওয়েব ডিজাইনার। ২০২০ সালে এসে কোম্পানি গুলোই শুধু ডেটা তৈরি করে না। আপনি আমি ইউজাররাও প্রতিনিয়ত প্রচুর ডেটা ক্রিয়েট করি। ইউজার যখন ডেটা ক্রিয়েট করে তখন প্রয়োজন হয় প্রচুর ইন্টারেকশন। আর ডেটার সাথে ইন্টারেক্ট করার জন্য আছে ফ্রন্টেন্ড ডেভেলপারস।

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

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

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

এত মানুষ কাজ করছে যেন আপনি আমি ভালো মত ডেটা গুলো দেখতে পাই। সব কিছু যেন সময় মত প্রোডাকশনে চলে আসে। কিন্তু প্রোডাকশন আর ডেভেলপমেন্টের ভিতরে রয়েছে একটা বিরাট দূরত্ব, যেই দূরত্ব ঘোচাতে এগিয়ে এসেছে ডেভওপ্স ইঞ্জিনিয়ারস। প্রোডাকশন সার্ভারে অ্যাপ্লিকেশনটা ঠিক মত ডেটা দেখাচ্ছে কিনা সেটা মনিটর করার জন্য রয়েছে সিস্টেম অ্যাডমিনিস্ট্রেটর।

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

যাক বাবা ডেটা দেখানোর যন্ত্র প্রস্তুত এবং সব কিছু ঠিক ঠাক। কিন্তু কই? গুগলে সার্চ করলে তো আমার ডেটা দেখা যায় না? গুগলে আমার ডেটা দেখানোর জন্য লাগবে সার্চ ইঞ্জিন অপ্টিমাইজেশন। মানুষের দ্বারে দ্বারে আমার ডেটা পৌঁছে দেবে ডিজিটাল মার্কেটার। কিন্তু ডেটা কই? ওহ ডেটা ক্রিয়েট করার জন্য লাগবে কন্টেন্ট ক্রিয়েটর।

আহ, এবার হয়ত আমরা ডেটা ভালো ভাবে দেখাতে পারবো। ওহ শিট, আমার ডেটা শেষ। 20 | 21 | তাহলে নিশ্চয় বুঝতেই পারছেন, একজন প্রোগ্রামার হয়ে আমরা কতো দিকে যেতে পারি। এখানে কিন্তু শুধু একটি মাত্র সেক্টরের কথা উল্লেখ করা হয়েছে। কিন্তু এই রকম অসংখ্য সেক্টর আপনার জন্য অপেক্ষা করে আছে। আর এই সব সেক্টরের বেসিক রিকুয়ারমেন্ট হচ্ছে প্রোগ্রামিং। একজন ভালো প্রোগ্রামার একটি দেশের অর্থনীতি পরিবর্তন করে ফেলার সামর্থ্য রাখে। তাই প্রথমেই নিজের কাছে প্রতিজ্ঞা বদ্ধ হন যে একজন ভালো প্রোগ্রামার হয়ে উঠবেন। আর তারপরেই ডেভেলপমেন্টের জগতে পা রাখবেন। 22 | -------------------------------------------------------------------------------- /src/pages/404.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Link } from 'gatsby'; 3 | 4 | import Layout from '@rocketseat/gatsby-theme-docs/src/components/Layout'; 5 | import SEO from '@rocketseat/gatsby-theme-docs/src/components/SEO'; 6 | 7 | export default function NotFound() { 8 | return ( 9 | 10 | 11 |

You just hit a route that doesn't exist... the sadness.

12 |

13 | If you'd like to go back to homepage, click here 14 | . 15 |

16 |
17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/styles/global.css: -------------------------------------------------------------------------------- 1 | h1, 2 | h2, 3 | h3, 4 | h4, 5 | h5, 6 | h6 { 7 | color: #333333 !important; 8 | } 9 | 10 | h1 { 11 | font-size: 2rem !important; 12 | } 13 | 14 | h2 { 15 | font-size: 1.6rem !important; 16 | } 17 | 18 | h3 { 19 | font-size: 1.3rem !important; 20 | } 21 | 22 | p { 23 | color: #666666 !important; 24 | font-family: 'Kohinoor' !important; 25 | font-size: 1.1rem !important; 26 | text-align: justify !important; 27 | line-height: 1.6 !important; 28 | } 29 | -------------------------------------------------------------------------------- /static/array1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/array1.png -------------------------------------------------------------------------------- /static/array2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/array2.jpg -------------------------------------------------------------------------------- /static/array3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/array3.jpg -------------------------------------------------------------------------------- /static/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/banner.png -------------------------------------------------------------------------------- /static/binary-world.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/binary-world.jpg -------------------------------------------------------------------------------- /static/coming-soon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/coming-soon.png -------------------------------------------------------------------------------- /static/computer-is-dumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/computer-is-dumb.jpg -------------------------------------------------------------------------------- /static/condition1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/condition1.jpg -------------------------------------------------------------------------------- /static/condition2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/condition2.jpg -------------------------------------------------------------------------------- /static/condition3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/condition3.jpg -------------------------------------------------------------------------------- /static/courses-c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/courses-c.jpg -------------------------------------------------------------------------------- /static/courses-java.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/courses-java.jpg -------------------------------------------------------------------------------- /static/courses-js.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/courses-js.jpg -------------------------------------------------------------------------------- /static/courses-python.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/courses-python.jpg -------------------------------------------------------------------------------- /static/data-is-everything.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/data-is-everything.jpg -------------------------------------------------------------------------------- /static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/favicon-32x32.png -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/favicon.png -------------------------------------------------------------------------------- /static/fonts/KohinoorBangla-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/fonts/KohinoorBangla-Bold.otf -------------------------------------------------------------------------------- /static/fonts/KohinoorBangla-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/fonts/KohinoorBangla-Light.otf -------------------------------------------------------------------------------- /static/fonts/KohinoorBangla-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/fonts/KohinoorBangla-Medium.otf -------------------------------------------------------------------------------- /static/fonts/KohinoorBangla-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/fonts/KohinoorBangla-Regular.otf -------------------------------------------------------------------------------- /static/fonts/KohinoorBangla-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/fonts/KohinoorBangla-Semibold.otf -------------------------------------------------------------------------------- /static/fonts/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Kohinoor; 3 | src: url('kohinoorBangla-Bold.otd'); 4 | font-weight: bold; 5 | } 6 | 7 | @font-face { 8 | font-family: Kohinoor; 9 | src: url('KohinoorBangla-Light.otf'); 10 | font-weight: lighter; 11 | } 12 | 13 | @font-face { 14 | font-family: Kohinoor; 15 | src: url('KohinoorBangla-Medium.otf'); 16 | font-weight: 600; 17 | } 18 | 19 | @font-face { 20 | font-family: Kohinoor; 21 | src: url('KohinoorBangla-Semibold.otf'); 22 | font-weight: 700; 23 | } 24 | 25 | @font-face { 26 | font-family: Kohinoor; 27 | src: url('KohinoorBangla-Regular.otf'); 28 | font-weight: normal; 29 | } 30 | -------------------------------------------------------------------------------- /static/high-salary.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/high-salary.jpg -------------------------------------------------------------------------------- /static/hmnayem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/hmnayem.png -------------------------------------------------------------------------------- /static/loop1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/loop1.jpg -------------------------------------------------------------------------------- /static/online-class.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/online-class.jpg -------------------------------------------------------------------------------- /static/operator1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/operator1.jpg -------------------------------------------------------------------------------- /static/operator2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/operator2.png -------------------------------------------------------------------------------- /static/operator3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/operator3.png -------------------------------------------------------------------------------- /static/program-java.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/program-java.jpg -------------------------------------------------------------------------------- /static/program-js.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/program-js.jpg -------------------------------------------------------------------------------- /static/program-python.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/program-python.jpg -------------------------------------------------------------------------------- /static/programming-fundamentals.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/programming-fundamentals.jpg -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/robots.txt -------------------------------------------------------------------------------- /static/variable1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable1.jpg -------------------------------------------------------------------------------- /static/variable2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable2.jpg -------------------------------------------------------------------------------- /static/variable3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable3.png -------------------------------------------------------------------------------- /static/variable4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable4.png -------------------------------------------------------------------------------- /static/variable5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable5.jpg -------------------------------------------------------------------------------- /static/variable6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable6.jpg -------------------------------------------------------------------------------- /static/variable7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stacklearner/sl3-framework/86c5a9d186688807d420873326d544afd8cd7d89/static/variable7.png --------------------------------------------------------------------------------