முன்னுரை

நாம் இதற்கு முந்தைய பாடத்தில் “Kaniyam Foundation” என்ற சொற்களை ஆங்கிலத்தில் terminal லில் பதிவு செய்தோம் மற்றும் main ஃபங்சன் பற்றி தெரிந்து கொண்டோம். இந்த பாடத்தில்.

  • தரவு வகைகளை(data types) பற்றி மேலும் தெரிந்து கொள்வோம்.
  • string literal பற்றி மேலும் தெரிந்து கொள்வோம்.
  • const பற்றி மேலும் தெரிந்து கொள்வோம்.
  • := சுருக்கெழுத்து குறியீடு பற்றி மேலும் தெரிந்து கொள்வோம்.

தரவு வகைகளை(Data types)

தரவுகளை நாம் சுலபமாக குறிப்பிட்டு காட்ட எண்கள், லத்தீன் எழுத்துக்கள், தமிழ் எழுத்துக்கள், வார்த்தைகள், வரிகள், கட்டுரைகள், காவியம் போன்ற எண்ணற்ற வகைகளாக பிரித்து தரவு வகை என குறிப்பிடுகிறோம். ஒரு கணினியை இயங்குவதற்கும் நாம் அன்றாடம் அதை பயன்படுத்துவதற்கும் அடிப்படை தரவுகள்.
நாம் கணினியில் தரவுகளை சேகரித்து வைக்கவும் ,சேர்த்து வைத்த தரவுகளை மீண்டும் எடுக்கவும், எடுத்த தரவுகளை வைத்து பலவிதமான செயல்பாடுகள்(operations) மேற்கொள்ளவும்,செயல்பாடுகளின் முடிவில் கிடைக்கும் தரவுகளை வைத்து ஒரு அறிவுப்பூர்வமான முடிவெடுக்கவும். இறுதியில் மீண்டும் நாம் எடுத்த தரவுகளையும் செயல்பாடுகள் முடிவில் கிடைத்த தரவைகளை சேகரித்து வைக்கும் பயன்படுத்திகிறோம்.

கணினியின் நினைவகத்தில் தரவுகளை சேமிக்க எவ்வளவு இடம் தேவை?

கணிதத்தில் பல விதமான எண் அமைப்புகள் உள்ளன அவற்றில் சில இயல்பெண்(Natural Number), முழு எண்(Integer),மெய்யெண்(Real number), கலப்பெண்(complex number) தசம எண்(Decimal numbers). இந்த எண்களை வைத்து பலவிதமான கணக்கீடுகள் செய்யலாம். இந்த எண்களை நாம் கணினியின் நினைவகத்தில் இரட்டை எண்கள் ளாக(Binary number) மட்டும்தான் பதிவு செய்ய முடியும். இதற்கு முக்கிய காரணம் நினைவாக வடிவமைப்பு. கணினியின் நினைவகம் கோடிக்கணக்கான திரிதடையம்(transistors) ஒன்று சேர்க்கப்பட்ட ஒரு கருவி. ஒரு திரிதடையம் ஒரு நேரத்தில் இருக்கு(true) அல்லது இல்லை(false) என்ற நிலைகளை மட்டும் தான் குறிக்க முடியும். இது திரிதடையத்துக்கான வரம்பு(limitation).

இயல் பெண்கள் சுழியில்(zero) ஆரம்பித்து முடிவிலி(infinity) வரை செல்லலாம். ஒரு திரிதடையாதிர்க்கு பதில் இரு திரிதடையங்கள் பயன்படுதினால் நம்மால் சுழியில்யிருந்து மூன்று வரையுள்ள எண்களை சுட்டிக்காட்டலாம். இதை பின்வருமாறு ஒரு அட்டவணையில் சுட்டிக்காட்டலாம்.

T1 T2 N
0 0 0
0 1 1
1 0 2
1 1 3

T1 - திரிதடையம் ஒன்று
T2 - திரிதடையம் இரண்டு
N - இயல்பெண்

இதைபோல் நாம் 4 திரிதடையம் பயன்படுத்தினால் 15 வரை உள்ள இயல் பெண்களை சுட்டிக்காட்டலாம். நம்மிடம் இருக்கும் திரிதடையம் வைத்து அதிகபட்ச இயல் பெண்ணை எப்படி சுட்டிக்காட்டுவது என்பதை சுலபமாக கண்டுபிடிக்கலாம். உதாரணதிற்கு

1 1 1 1 1 1 1 1
2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0

128+64+32+16+8+4+2+1 = 255

8 திரிதடையம் பயன்படுதினால் 0 இருந்து 255 வரை உள்ள எண்களை நினைவகத்தில் பதிவு செய்யலாம். ஒரு திரிதடையம் பிட்(bit) என்றும் 8 பிட்டு(bits) சேர்ந்தது ஒரு பைட்(byte) என்றும் குறிப்பிடப்படுகிறது.

கணினியின் நினைவகத்திலிருந்து தரவுகளை எடுப்பது எப்படி ?

உயிர் எழுத்துக்களை எப்படி பதிவு செய்யலாம் என்று சிறிது கற்பனை செய்து பார்போம். உதாரணதிற்கு

T1 T2 T3 T4 T4
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
. . . . .
. . . . .
. . . . .
. . . . .
1 1 0 0

இது போன்று மற்ற எண்களும்,எழுத்துக்களும் வெவ்வேறு முறைகள் பயன்படுத்தி நினைவாகத்தில் பதிவு செய்யலாம். ஆனால் இதில் ஒரு சிக்கல் உள்ளது,கணினியின் நினைவாக தயாரிப்பாளர்களும், மென்பொருள் பொறியாளர்களும் அவரவர் விருப்பத்திற்கு ஒரு எண்ணை அல்லது எழுத்தை எப்படி நினைவகத்தில் சுட்டி காட்ட வேண்டும் என்பதை முடிவு செய்தால். நாம் எழுதும் மென்பொருள் இன்னொருவர் கணினியில் இயக்குவது சுலபம் இல்லை. உதாரணத்திற்கு மேலே உள்ள அட்டவணையில் 0000 என்ற பைனரி எண் குறிக்கும் என்று ஒரு கணினி தயாரிப்பாளரும் 1100 என்ற எண் என்று வைத்து கொண்டால். அஆஇஈ என்று ஒரு கணினியில் தெறிவது ̀ஃஓளஓஒ` தெறியும்.

எண்கள் எப்படி நினைவகத்தில் எப்படி சுட்டிகாட்டபடுகிறது எண்பதை தெரிந்துகொள்ள எண்டியன்னெஸ்(Endianness)3 பற்றி படித்து கொள்ளுக்கள். இதைப்போல் நம் உலக வழக்கில் உள்ள எழுத்துக்களை எப்படி குறியாக்கம்(encoding) செய்ய வேண்டும் என்று பல தரநிலைகள்(standards) உண்டு. அதில் ஒன்று இலாப நோக்கற்ற நிறுவனம் Unicode Consortium. இந்த நிறுவனம் உலகில் தலை சிறந்த மென்பொருள் நிறுவனங்களுடன் இணைந்து Unicode Standard யை வெளியிட்டுள்ளது. நாம் எழுதும் go நிரல் Unicode UTF-8 லில் குறியாக்கம் செய்தால் மட்டும் தான் go தொகுப்பி யால் நிரலை தொகுக்க முடியும்.

கணினியின் நினைவகத்தில் உள்ள தரவுகள் மீது செயல்பாடுகள் செய்வது எப்படி

தரவுகளின் மீது நாம் பல வகை கணக்கீடுகள் மற்றும் தருக்க செயல்பாடுகள்(logical operations) செய்யலாம். இயல்பெண்கள் வைத்து கூட்டல்,கழித்தல்,பெருக்கல் மற்றும் வகுத்தல் போன்ற கணக்கீடுகள் செய்யாலம். ஆனால் இந்த கணக்கீடுகள் நாம் வார்த்தைகளின் மீது செய்ய இயலாது. ஒரு தரவின் மீது எந்த வகை செயல்பாடுகள் அல்லது கணக்கீடுகள் செய்யலாம் என்பது அந்த தரவின் பண்புகளை பொறுத்தது.

Go தரவு வகைகள்

கணினியின் நினைவாதில் தரவுகளை எப்படி கையாள வேண்டும், அதை எப்படி நினைவகத்தில் சேமிக்க வேண்டும், அதை வைத்து எவ்வித செயல்பாடுகள் மற்றும் கணக்கீடுகள் செய்யலாம் இவை அனைத்தையும் நாம் நுணுக்கமாக கையல தேவையில்லை. go தொகுப்பிக்கு நமக்கு எந்த வகையான தரவு வகை தேவைப்படுகிறது என்று தெரிவித்தால் போதும் மற்ற அனைத்தும் go runtime பார்த்துக்கொள்ளும். go உடன் வரக்கூடிய தரவு வகைகள் பின்வருமாறு.

  1. அடிப்படை(Basic) - எண்கள்(numbers), string மற்றும் பூலியன்
  2. திரள்(Aggregate) - array மற்றும் structs
  3. சுட்டு(Reference) - Pointers, slices, maps, functions, மற்றும் channels
  4. இடைமுகம்(Interface)

constants vs literals vs variables

இந்த பாடத்தில் அடிப்படை தரவு வகையான string தரவு வகை பயன்படுத்தி constants,literals மற்றும் variables இடையில் உள்ள வேறுபாட்டை அறிவோம். பின்வரும் பாடங்களில் மற்ற தரவு வகை பற்றி அதன் தேவை வரும் பொழுது அறிவோம்.

string என்ற சொல்லுக்கு பொருள் மெல்லிய கயிறு(rope).பல நார்(fibre) ஒன்று சேர்ந்தது தான் ஒரு கயிறு உருவகிறதது literal என்ற சொல்லுக்கு நிலைஉரு என்று பொருள். உதாரணத்திற்கு நான் கூறுவதை ஒரு நிலைஉரு ஆக எடுத்துக் கொள் என்று கூறினால், நான் கூறுவதை நேரடியக எடுத்துக்கொள் அதற்க்கு நீ வேறு ஒரு விளக்கம் புரிந்து கொள்ள வேண்டாம் என்று அர்த்தம். constant என்ற சொல்லுக்கு நிலையான என்று பொருள். variable என்ற சொல்லுக்கு நிலையற்ற என்று பொருள்

“Kaniyam Foundation” ஒரு string literal

மெல்லிய கயிறு என்ற சொல்லை ஒப்பிடுகையில் பல unicode(UTF-8) எழுத்துக்கள்
வரிசையாக அமைக்கப்பட்டதுதான் string literal. நாம் முந்தைய படத்தில் எழுதிய நிரலில்

̀̀ fmt.Println("Kaniyam Foundation")

என்று குறிப்பிட்டோம். go நிரல் மொழியை பொருத்தவரையில் string என்று குறிப்பிடும் பொழுதும் string literal என்று குறிப்பிடும் பொழுதும் இரண்டுக்கும் ஒரு பெரிய வித்தியாசம் உண்டு. go நிரல் Unicode UTF-8 லில் குறியாக்கம் செய்தால் மட்டும் தான் go தொகுப்பியல் நம் நிரல் லை புரிந்து கொள்ள இயலும். ஆகையால் நாம் எழுதிய Kaniyam Foundation என்னும் வார்த்தைகள் Unicode codepoint ஆக எடுக்கப்பட்டு Println ஃபங்சன் கொடுக்கப்பட்டு terminal லில் வெளியிடப்படுகிறது. நாம் எழுதிய நிரலில் Kaniyam Foundation என்ற வார்த்தைகளுக்கு பதில் Unicode codepoint களை பயன்படுத்தினாலும் Kaniyam Foundation என்ற வார்த்தைகள் terminal லில் வெளியிடப்படும்.

package main

import "fmt"

func main() {

	fmt.Println("\u004B\u0061\u006E\u0069\u0079\u0061\u006D\u0020\u0046\u006F\u0075\u006E\u0064\u0061\u0074\u0069\u006F\u006E")

}

இப்பொழுது terminal லில் இருந்து Kaniyam ஃபோல்டர் க்கு சென்று பின்வருபவற்றை பதிவு செய்யவும்`

renga@renga-Standard-PC-Q35-ICH9-2009:~/go-workspace/src/kaniyam$ go run main.go
kaniyam Foundation

const

நாம் முந்தைய பாடத்தில் எழுதிய நிரலை சிறிது மாற்றம் செய்து, “Kaniyam Foundation” என்ற வார்த்தைக்கு பதிலாக terminal லில் ஐந்து முறை வெளியிடுவோம்.

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Kaniyam Foundatio")
	fmt.Println("Kaniyam Foundation")
	fmt.Println("Kaniyam Foundatio")
	fmt.Println("Kaniyam Foundatio")
	fmt.Println("Kaniyam Foundation")
}
renga@renga-Standard-PC-Q35-ICH9-2009:~/go-workspace/src/kaniyam$ go run main.go
Kaniyam Foundatio
Kaniyam Foundation
Kaniyam Foundatio
Kaniyam Foundatio
Kaniyam Foundation

இந்த நிரலில் ஒரு சிக்கல் உள்ளது. “Foundation” என்ற சொல்லை மூன்று முறை தவறாக எழுதி உள்ளோம். இதை நாம் திருத்த வேண்டும் என்றால் மூன்று இடங்களில் திருத்த வேண்டும்.இது ஒரு பெரிய சிக்கல் இல்லை ஆனால் Kaniyam Foundation பத்தாயிரம் முறை நாம் பதிவு செய்கிறோம் என்று வைத்துக் கொண்டால் எவ்வளவு சிக்கல். இந்த சிக்கலை தீர்க்க ஒரு வழி constant. நாம் மேலே பார்த்த நிரலில் ஒரு திருத்தம் செய்யலாம்.

package main

import (
	"fmt"
)

func main() {
    const v = "Kaniyam Foundation"
	fmt.Println(v)
	fmt.Println(v)
	fmt.Println(v)
	fmt.Println(v)
	fmt.Println(v)
}
renga@renga-Standard-PC-Q35-ICH9-2009:~/go-workspace/src/kaniyam$ go run main.go
Kaniyam Foundation
Kaniyam Foundation
Kaniyam Foundation
Kaniyam Foundation
Kaniyam Foundation

கணிததிதில் பை(π) மிக முக்கியமான சிறப்பு எண்களில் ஒன்று. நாம் பை(π) குறியிடு பார்க்கும் இடதில் 3.14159 அல்லது 22/7 என்ற எண்களை பயன்படுத்த வேண்டும் என்று நமக்கு தெரியும். π ஒரு நிலையான எண் அதனுடைய அர்த்தம் மாறப்போவதில்லை. அதைப்போல் நம் நிரல்லை பொருத்தவரையில் “Kaniyam Foundation” என்ற string literal ஐந்து இடங்களிலும் ஒரே மாதிரி வெளியிடு செய்ய வேண்டும். ஆதலால் v const க்கு “Kaniyam Foundation” என்ற string லை சுட்டிக்காட்டி v என்ற எழுத்தை நாம் ஐந்து இடங்களில் பயன்படுத்தி உள்ளோம்.{} சுருள் அடைப்புக்குறிப்புகுள் நாம் v என்ற எழுத்தை பலமுறை பயன்படுத்திகொள்ளலாம்.

variable

நாம் முன்பு எழுதிய நிரலில் சிறிது மாற்றம் செய்து, “Kaniyam Foundation” என்ற வார்த்தையை ஐந்து முறை வெளியீடு செய்வதற்கு பதிலாக பின்வருமாறு வெளியிடு செய்வோம்.

renga@renga-Standard-PC-Q35-ICH9-2009:~/go-workspace/src/kaniyam$ go run main.go
Kaniyam  
Foundation
Kaniyam Foundation
package main

import (
	"fmt"
)

func main() {
    const v = "Kaniyam"
	fmt.Println(v)
	v = "Foundation"
	fmt.Println(v)
	v = "Kaniyam Foundation"
	fmt.Println(v)
}
renga@renga-Standard-PC-Q35-ICH9-2009:~/go-workspace/src/kaniyam$ go run main.go
# command-line-arguments
./main.go:10:4: cannot assign to v (declared const)

go தொகுப்பி நாம் எழுதிய நிரலில் பத்தாவது வரியில் பிழை உள்ளது என்று சுட்டிக் காட்டுகிறது. நாம் முன்பு கூறியது போல் const இங்கு பயன்படுத்த முடியாது. ஒரு முறை ̀v` என்ற எழுத்து “Kaniyam” என்ற string க்கு எட்டாவது வரியில் சுட்டி காட்டி விட்டோம். இதற்கான தீர்வு variable. நமது நிரலில் சிறிய திருத்தம் செய்யலாம்.

package main

import (
	"fmt"
)

func main() {
    v := "Kaniyam"
	fmt.Println(v)
	v = "Foundation"
	fmt.Println(v)
	v = "Kaniyam Foundation"
	fmt.Println(v)
}
renga@renga-Standard-PC-Q35-ICH9-2009:~/go-workspace/src/kaniyam$ go run main.go
Kaniyam  
Foundation
Kaniyam Foundation

நாம் முதலில் எழுதி v := "Kaniyam" இந்த வரியில் மூன்று விடயங்களை தொகுப்பிக்கு சுட்டி காட்டுகிறோம். v எழுத்தை வேரியபிள் (variable) என்று குறிப்பிடுகிறோம். இந்த வேரியபிள் வெவ்வேறு இடங்களில் வெவ்வேறு string சுட்டிக்காட்டுகிறது. முதலில் “Kaniyam” என்ற string யை := சுருக்கெழுத்து குறியீடு பயன்படுத்தி, பின்பு = சம அடையாளம் (equal sign) பயன்படுத்தி “Foundation” string யும், இறுதியில் = சம அடையாளம் பயன்படுத்தி “Kaniyam Foundation” string யும் சுட்டி காட்டுகிறோம். {} சுருள் அடைப்பு குறிப்புகள் நாம் v என்ற எழுத்தை பலமுறைகள் பயன்படுத்திகொள்ளலாம்

வேரியபிள் பெயர் இடம் பொழுது சில விதிமுறைகளை கடைபிடிக்க வேண்டும் அவை பின்வருமாறு

  1. _(underscore) அடிக்கோடு குறியில் ஆரம்பிக்கலாம்.
  2. ஒரு எண்ணை(0-9) கொண்டு ஆரம்பிக்க கூடாது.
  3. ஆங்கில அகர வரிசை(alphabets) எழுத்துக்களை கொண்டு ஆரம்பிக்கும்.
  4. golang ரிசர்வ்ட் கேய் வேர்ட்ஸ் பயன்படுத்த கூடாது.
  5. வேரியபல் லின் பெயர் எவ்வளவு நீளம் வேண்டுமானாலும் இருக்கலாம். உங்கள் நிரல் மற்றவர் படிக்க சுலபமாக இருக்க நான்கில் இருந்து பதினாறு எழுத்துக்களை கொண்டு இருப்பது நன்று.
  6. அகர வரிசைகளும் எண்களும் கலந்து இருக்கும். உதரணத்திற்கு kaniyam10 என்பது ஒரு சரியான பெயர்.

:= shorthand notation

இந்த நிரலில் “Kaniyam” என்ற string literal தொகுப்பியால் உங்கள் கணினியின்
நினைவகத்தில்(memory) பதிவு செய்யப்படுகிறது1. அதனுடைய முகவரி v என்னும் ஆங்கில எழுத்து சுட்டிக்காட்டப்படுகிறது. ஒரு variable யை தொகுப்பிக்கு தெரிவிக்கும் பொழுது நாம் தரவு வகையயை தொகுப்பிக்கு சுட்டிகாட்ட வேண்டும். go நிரலில் இரு முறைகளில் தரவு வகையயை சுட்டிக்காட்ட முடியும். அதில் ஒரு முறை :=சுருக்கெழுத்து குறியீடு(shorthand notation) இன்னொரு முறை var கெய்போர்ட்(keyword) பயன்படுத்துவது. இங்கு :=` சுருக்கெழுத்து குறியீடு பயன்படுத்தும் பொழுது go தொகுப்பிடம் நாம் எவ்வகையான தரவு பயன்படுத்த வேண்டும் என்பதை முடிவு செய்யும் பொறுப்பை go தொகுப்பி ஏற்றுக்கொள்கிறது.

பின்னுரை

நம் இந்த பாடத்தில் go வில் உள்ள அடிப்படை தொடரியல்கள் சிலவற்றை தெரிந்து கொண்டோம். பின்வரும் பாடங்களில் நாம் மற்ற தொடரியல்கள் பற்றி அறிந்துகொள்வோம்.

1 golang மொழியில் கணினியின் நினைவகத்தில் எப்படி நீர்வீக படுகிறது என்பது விவரங்கள் இந்த புத்தகத்தின் வரைமுறைக்கு அப்பாற்பட்டது. golang யை பயன்படுத்த இதை பற்றி தெரிந்து கொள்ள தேவையில்லை.

Photo Credit

Gopher by Maria Letta