Android ئۈچۈن يېڭى پروگرامما تىلى Kotlin
بۇ يازمىنى ئاخىرىدا يۇمشاق دېتال تەھرىرلىگەن. ۋاقتى2017-3-17 10:43ئەسسالامۇ ئەلەيكۇم،
خىزمەت ئالدىراشچىلىقى تۈپەيلى قولۇمدىكى تۈرنى تىز تۈگەتمىسەم بولمايدىغانلىقى سەۋەپلىك ھىچ بىر تۈزۈك تېمىمۇ يازالمىدىم.
گەرچە تېما يازالمىساممۇ مۇنبەردە پروگراممىر بالىلارنىڭ تېمىسىنى كۈتۈپ كۈتۈپ بولالماي ئاخىرى ئۆزۈم بۈگۈن كەچلىك ئۇيقۇمنى قويۇپ بۇ تېمىنى يىزىشقا ئاتلىنىپتىمەن،
ئۆزۈمنىڭ ھەم شىركەت ئىھتىياجى تۈپەيلى كومپىيۇتېر ئۈستەل يۈزى پروگراممىرىدىن Android پروگراممىرى بولۇشقا قاراپ ماڭدىم،
ئىككى ھەپتە ئۈگىنىش ۋە تەييارلىقلاردىن كىيىن رەسمىي پروگرامما يىزىشقا ئاتلاندىم، ئاخىرىدا Kotlin بىلەن تونۇشۇپ ئۈگىنىپ ھەم ئەمەلىي قوللىنىپ ئىشلىتىپتىمەن،
ئەمەلىي يىزىپ باققان Kotlin كودلىرىم 1000 قۇردىن ئىشىپ بوپتۇ.
بۇ ئارىلىقتا Kotlin دا نۇرغۇن مەسىلىلەرنى ھەل قىپتىمەن، ئۆزۈم خىلى كۆپ ئامبارلارنى يىزىپتىمەن، ئۆزۈملا ئىشلەتمەي دەپ ئالدىنقى قىتىملىق تېمامدا ئورتاقلاشقانمۇ بولدۇم،
دىمەك مەن جاۋا ۋە بۇ يېڭى پروگرامما تىلىنى ئىشلىتىش جەريانىدا نۇرغۇن تەسراتلارغا ئىگە بولدۇم،
خوش، ئۇنداقتا بۇ قىتىم يازماقچى بولغىنىم بۇ يېڭى پروگرامما تىلى بىلەن تونۇشۇش بولىدۇ، مەسىلەن :
بۇ قانداق تىل؟
نىمە ئۈچۈن ئىشلىتىمىز؟
قانداق ئىشلىتىمىز؟
ئۇنداقتا باشلاپ كەتتۇق.
Kotlin دىگەن نىمە؟(What)
ئاۋال بۇ تىلنىڭ ئىجادچىسى بولغان JetBrains توغرىسىدا ئازراق جۆيلۈپ باقايلى:lol
مەنچە Android Studio ئىشلىتىپ باققان ئادەم بىلىدۇ دەپ ئويلايمەن،
JetBrains بولسا نۆۋەتتە دۇنيادا ئەڭ ئىسىل پروگرامما ئىچىش مۇھىتىنىڭ بىرى بولغان IntellIJ ئائىلىسى ۋە IntellIJنى بارلىققا كەلتۈرگەن شىركەت،
بىلىمىز، IntellIJبولسا Microsoft Visual Studio يۈرۈشلۈكىدىن قىلىشمىغۇدەك ھەتتا تەڭ تۇرالىغۇدەك كۈچلۈك ھەم پەچەت پروگرامما ئىچىش مۇھىتى.
گۇگىل يېڭىدىن تارقاتقان سۆيۈنۈپ ئىشلىتىۋاتقان Android Studio نىڭ يادروسىمۇ دەل IntellIJ
يەنە بۇ شىركەتنىڭ IntellIJنى يادرو قىلىپ تارقاتقان IntellIJ نىڭ ھەر خىل ۋارىيانىتلىرى بار، مەسىلەن:
WebStrom, PhpStrom, PyCharm, RubyMine,
PHP, Java, Python, Ruby, HTML+CSS+JS يىزىپ باققانلار بىلىمىزغۇ؟
قىززىقارلىق يىرى بۇ شىركەت چىقارغان IntellIJ ۋە IntellIJئائىلىسى ئەزالىرىنىڭ ھەممىسى Java دا يىزىپ چىقىلغان، ئاساسەن بۇ شىركەتنىڭ بارلىق مەھسۇلاتى Java دا يىزىپ چىقىلغان دىسەك خاتالاشمايمىز.
خوپ. ئۇنداقتا بىز جۆيلۈۋاتقان JetBrains بولسا Kotlin نى بارلىققا كەلتۈرگەن شىركەتتۇر.
JetBrains نىڭ ئۇزۇن يىللىق جاۋا پروگراممىسى يىزىش تەجرىبىسى بار پروگراممىرلىرى ئۆزىنىڭ نۇرغۇن يىللىق تەجرىبىسى، مول بىلىملىرى، ئىنتايىن ئوچۇق يورۇق بولغان كۆز قاراش، ئەركىنلىك، ئەڭ مۇھىمى ئىسىل ھەم زامانىۋى ئىددىيەسىنى يۇغۇرۇپ بىز دەل تىلغا ئىلىۋاتقان بۇ سۆيۈملۈك تىلنى بارلىققا كەلتۈردى،
مەن C# ئۈگەنگەن، قوشۇمچە C, C++, Java, Python, JavaScript, HTML+CSS قاتارلىق تىللارنى ئۈگىنىپ باققان
گەرچە مۇشۇ قوشۇمچە ئۈگەنگەن ھەر بىر تىلنى ۋايىغا يەتكۈزۈپ ئىشلىتەلەيمەن دىيەلمىسەممۇ لىكىن مىنىڭ ئازدۇر كۆپتۇر ئىشلىتىش تەجرىبىلىرىم ھەم ھىس قىلغانلىرىم بار، ھىچ بولمىغاندا مۇشۇ تىللارنىڭ بىرەرسى ئالدىمغا كىلىپ قالسا نىرى تۇر دىمەيمەن،
ھەر بىر تىلنىڭ ماڭا بەرگەن ئۆزگىچە تەسىرى بار،
ئەمدى ماۋۇ Kotlin نى ئۈگەنگەندە مەن ئىۋۇ يۇقارقى تىللارنىڭ سىماسىنى كۆردۈم، چۈنكى بۇ تىلدا يۇقارقى تىللارنىڭ سىماسى بار ئىدى.
C# كىڭەيىتمە فۇنكىسىيە، Linq غا ئوخشاش مۇرەككەپ سانلىق مەلۇماتلارنى سۈزۈش، قىسقىسى ياخشى بىر تەرەپ قىلىش ئىقتىدارى
Python فۇنكىسىيەنىڭ سۈكۈتتىكى پارامىتىرى ۋە ئىسمىنى ئاتاپ تۇرۇپ قىممەت بەرگىلى بولىدىغان ئالاھىدىلىك
Java بۇنى دىمىسەممۇ بولار،
Swift پروگرامما تىلىنىڭ قۇرۇلمىسى
C, C++ كىلاسس يازماي تۇرۇپمۇ فۇنكىسىيە شەكلىدە يەنى جەريانغا يۈزلەنگەن ھالەتتە پروگرامما يىزىش.
JavaScript, C#, Python لاردا بار بولغان Lambda
.......
ئىشقىلىپ بۇ تىلدا ھەممە تىللارنىڭ ئالاھىدىلىكى تىپىلىدۇ،
ھەتتا ئەمەل بەلگىلىرىنىمۇ ئۆزىمىز يىزىۋالالىغۇدەك دەرىجىدە.
Kotlin دەپ ئاساسەن بىز ئاڭلاپ باقمىغان، ئەلۋەتتە بۇ نۇرمال ئەھۋال، چۈنكى بۇ تىخى يېڭى ئىلان قىلىندى،
1.0 نەشىرى 2016-3 ئەتراپىدىغۇ دەيمەن ئىلان قىلىندى،تىخى نەچچە ھەپتە بۇرۇن 1.1 سىناق نەشىرىنى تارقاتقان، ھەپتە بۇرۇن تىخى 1.1 رەسمىي نەشىرىنى تارقاتتى،
بۇ تىل داۋاملىق يېڭىلىنىۋاتىدۇ ھەم يېڭىلىنىدۇ،
نىمە ئۈچۈن ئىشلىتىمىز؟(Why)
سىز بۇ تىلنىڭ گىرامماتىكىسىدىن ئۈنۈملۈك پايدىلىنالىسىڭىز سىز يازغان Java كودىنى 30-40 پىرسەنىت قىسقارتالايسىز،
مۇھىمى ماڭا ئوخشاش Oracle نىڭ Java نى يېڭىلىمىغىنىغا قاخشاپ ئۆزىڭىزگە ئۆزىڭىز كايىپ يۈرمەيسىز،
پروگراممىنىڭ قۇرۇلمىسى تىخىمۇ ئىنىق، تىخىمۇ ئاددىي بولىدۇ،
تىخىمۇ كۆپ زىھنىڭىزنى ئاۋارچىلىقلارنى ھەل قىلىشقا ئەمەس بەلكى ئەمەلىي مەسىلىنى ھەل قىلىشقا قارىتالايسىز.
ئاددىي، ئاز ئەمما ساز كود سىزنىڭ خىزمەت مىقدارىڭىزنى خىلىلام يەڭگىللىتەلەيدۇ
C تىلى زامانىسىدىن باشلاپ داۋاملىشىپ كىلىۋاتقان بەزى بىر ئارتۇقچى ياكى ئۈنۈمسىز تەركىبلەر چىقىرۋىتىلگەن، ئازراقمۇ بولسا ئاز كود يازىسىز.
ئىشقىلىپ ھوزۇر باشقىچە...
مەس جۆيلىمىدىم، راس
بۇ تىلمۇ ئوخشاشلا Java نىڭ ئۈستىگە قۇرۇلغان يەنى JVM دا ئىجرا بولىدۇ، يەنى بايىت كودى Java بايىت كودىغا تەرجىمە قىلىنىدۇ.
شۇنداق بولغاچقا Java بىلەن 99.999 پىرسەنىت سىغىشىدۇ، دىمەك بىرلا ۋاقىتتا تەڭ ئىشلىتىشكە بولىدۇ.
بۇ نىمە دىگەنلىك دىگەندەك Java نى ئىشلەتكىلى بولىدىغانكى ھەر قانداق يەردە ئىشلەتكىلى بولىدۇ.
ئەلۋەتتە Java SE, Java EE دىن سىرىت Android مۇ بۇنىڭ ئىچىدە.
قانداق ئىشلىتىمىز؟(How)
Java SE /EE ئۈچۈن ئىگە تەرەپ تور بەت يەنى jetbrains.com غا چىقىپ ئەڭ يېڭى نەشىردىكى IntellIJ IDEA نى چۈشۈرسىڭىز بولىدۇ.
Android ئۈچۈن بۇنى مەن كىيىن مەخسۇس سۆزلەيمەن،
بۇ تېمىنىڭ نۆۋەتتىكى مەزمۇنى بۇ يېڭى تىلغا قارىتا ئازراق چۈشەنچە پەيدا قىلىش، دەسلەپكى قەدەمدە تونۇشۇش،
گىرامماتىكىسى ۋە باشقا جەھەتلەردە توردىن ئىزدىنىپ باقسىڭىزمۇ بولىدۇ، كىيىن مەخسۇس يەنە كىلىمىز
ئۇنداقتا بىز بەزى بىر كىچىك Example لەر يەنى مىساللار ئارقىلىق دەسلەپكى قەدەمدە بۇ تىلنىڭ ئەۋزەللىكلىرىنى بىرەر قۇر كۆرۈپ ئۆتەيلى،
(بۇ مىساللاردا ئۆزۈم يىزىۋالغان ئامبارنى ئىشلىتىمەن، شۇڭا مەن يازغان كود Kotlin نىڭ ئۆزىنىڭ كودى ئەمەس، لىكىن مەن يازغاندەك يازغىلى بولىدۇ،
پەقەت بولمىسا http://git.oschina.net/yeganaaa/Ug-Project-Views مەن ئىشلىتىۋاتقان ئامبارنى سىزمۇ ئىشلىتىڭ، ئەلۋەتتە داۋاملىق يېڭىلاپ تۇرىمەن)
1. كونۇپكا بىسىلغاندا بىر دانە TextView نىڭ قىممىتىنى ئۆزگەرتىمەن
كودىنىڭ سىلىشتۇرمىسى
Kotlin
/*******************************************************************************************************************/
Button1.click ={
TextView1.text = "ئەسسالامۇ ئەلەيكۇم"
}
/*******************************************************************************************************************/
Java
/*******************************************************************************************************************/
final Button btn = (Button) findViewById(R.id.Button1);
final TextView txv = (TextView) findViewById(R.id.TextView1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txv.setText("ئەسسالامۇ ئەلەيكۇم");
}
});
/*******************************************************************************************************************/
Kotlin كودىنى كۆرۈپ ھەيران بولدىڭىزمۇ؟ چۈنكى Kotlin دا TextView1, Button1 لارنى findViewById قىلىدىغان جەريان يوق،بۇ قانداق گەپ بولۇپ كەتتى؟
جاۋابى JetBrains ياسىغان بىر دانە قىستۇرما بىلەن بۇ ئىشلار ھەممىسى ئۈزۈل كىسىل ھەل بولۇپ كەتتى،
ھەمدى بۇنىڭدىن كىيىن findViewByID قىلىپ ئاۋارە بولمايمىز، دىمەك ButterKnife قا ئوخشاش View لارنى باغلايدىغان ئىش يوق.
2. بىر دانە يېڭى لىنيە (Thread) قۇرۇپ كۆرۈنمە يۈز ئۈستىدىكى TextView نىڭ قىممىتىنى ئۆزگەرتىمەن، ئەمدى بۇنىڭ ئىككى خىل نۇسقىسىنى ئايرىم ئايرىم كۆرۈپ ئۆتىمىز
ئۈنۈمى تۆۋەندىكىدەك
Java
public class MainActivity extends AppCompatActivity {
int index = 0;
Handler h;
Thread t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*******************************************************************************************************************/
final Button btn = (Button) findViewById(R.id.Button1);
final TextView txv = (TextView) findViewById(R.id.TextView1);
h = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
txv.setText(index + "");
}
}
};
t = new Thread(new Runnable() {
@Override
public void run() {
for (int a = 0; a < 100; a++) {
try {
Thread.sleep(30);
Message m = new Message();
m.what = 0;
h.sendMessage(m);
index++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
t.start();
}
});
/*******************************************************************************************************************/
}
}
Kotlin
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
/*******************************************************************************************************************/
Button1.click = {
var index = 0
runASync {
repeat(100)
{
delay(30)
index++
runUI {
TextView1.text = index.toString()
}
}
}
}
/*******************************************************************************************************************/
}
}
runAsync دىگەن مەن يىزىۋالغان فۇنكىسىيە، ئىچىگە يىزىلغان كودلار يېڭى Thread ئىچىدە ئىجرا بولىدۇ،
ئىچىدىكى runUI بولسا runUI ئىچىگە يىزىلغان ھەر قانداق نەرسە UI نىڭ Thread ئۈستىدە ئىجرا بولىدۇ
يۇقارقى فۇنكىسىيەلەر بىلەن ئىنتايىن ئاسانلا كۆپ لىنيەنى يۈرگۈزگىلى بولۇپلا قالماستىن تىخى UI غا بىۋاستە مەشغۇلات قىلالايدۇ
سىزنىڭ زىرىكىشلىك بولغان Thread ئىچىدە تۇرۇپ Handler غا ئۇچۇر ئەۋەتىدىغان ئىشنى قىلىشىڭىزنىڭ زۆرۈرىيىتى يوق،
دىمەك سىز تىخىمۇ كۆپ زىھنىڭىزنى ئۆزىڭىزنىڭ ئىشىغا قارىتالايسىز
ياكى ئەگەر بىر لىنيە ئىچىدە كۆپ قىتىم ئارىلاپ ئارىلاپ UI غا مەشغۇلات قىلىمەن دىسىڭىز مۇنداق يازسىڭىزمۇ تامامەن بولىدۇ
3. بىرلا ۋاقىتتا كۆپ لىنيە ھاسىل قىلىپ كۆپ لىنيەدە بىرلا ۋاقىتتا كۆرۈنمە يۈزگە مەشغۇلات قىلىش ۋە ئۆزگەرگۈچى مىقدار index نىڭ قىممىتىنى ئاينىتىش
يۇقىرى دەرىجىدە ئىشلىتىشنى قوللايدۇمەسىلەن ئۈنۈمنى كۆرۈڭ
Go.click = {
var index = 0
runASync(threadCount = 10) {
for (i in 1..60)
{
delay(10 + (it.toLong() * 3))
index++
runUI {
Go.text = index.toString()
when (it) {
0 -> {
t1.content += "|"
}
1 -> {
t2.content += "|"
}
2 -> {
t3.content += "|"
}
3 -> {
t4.content += "|"
}
4 -> {
t5.content += "|"
}
5 -> {
t6.content += "|"
}
6 -> {
t7.content += "|"
}
7 -> {
t8.content += "|"
}
8 -> {
t9.content += "|"
}
9 -> {
t10.content += "|"
}
}
}
}
}
}
كۆرۈۋىلىشقا بولىدۇ، runASync(threadCount = 10) ئارقىلىق بىرلا ۋاقىتتا 10 لىنيە ئىچىشقا بولىدۇ،
كىيىن مۇشۇ بۆلەككە لىنيە بىخەتەرلىكىگە ئائىت بۆلەكلەرنى قوشسام تىخىمۇ پەچەت بولۇپ كىتىدۇ
4. ئۇچۇر ماسلاشتۇرغۇچ "Adapter"Android قا كۆچۈپ بىرىنچى بولۇپ مىنى بىزار قىلغان نەرسىنىڭ بىرى شۇ،
مەن ھەر بىر ListView, REcyclerView, ViewPager لارغا ئايرىم ئايرىم Adapter ياساپ زىرىكتىم، شۇنىڭ بىلەن createAdapter فۇنكىسىيەسىنى يىزىپ چىقتىم
تەقلىدلىگۈچنىڭ dp سانى بەك چوڭ بولغاچقا شۇڭا كىچىك چىقىپ قالدى، تېلېفوندا نۇرمال كۆرىنىدۇبۇنىڭدىن سىرىت RecyclerView, ViewPager قاتارلىقلارغىمۇ Adapter يىزىپ قويدۇم، ئەكىلىپلا ئىشلىتىشكە بولىدۇ
ئەسلى كودى
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main22)
var data = Array
List1.adapter = createBaseAdapter(this, R.layout.itemlayout, data){
GetView { position, convertView, parent, data ->
convertView.findTextView(R.id.Name).text = data!!
convertView.click = {
data!!.add("يېڭى قوشۇلغان ئەزا")
this.notifyDataSetChanged()
showToast(data!!)
}
}
}
}
ئەلۋەتتە بۇ ئاز بىر قىسىملىرى،
گىپىمىزنىڭ ئاخىرىغا كەلسەك kotlin بولسا زامانىۋى، ئاددىي ھەم چۈشىنىشلىك، ئاز كود يىزىپ كۆپ ھوسۇل ئالىدىغان،ئىسىل بىر پروگرامما تىلى،
كىملەرگە ئۈگىنىشكە ماس كىلىدۇ؟
نۆۋەتتە بۇ تىل تىخى يېڭىلام ئىلان قىلىنغاچ مۇناسىۋەتلىك ياردەم ھۆججەتلىرى قاتارلىقلار باشقا پروگرامما تىللىرىدەك كۆپ ئەمەس،
لىكىن يولۇققان ھەر قانداق مەسىلىنى ھەل قىلىشقا بولىدۇ، مەنمۇ ھازىرغىچە بىر تۈرنى بىشىدىن باشلاپ مۇشۇ تىلدا يازدىم، ھەل قىلالمايدىغان، باش ئاخىرى يوق مەسىلىلەر كۆرۈلمىدى،
لىكىن بۇ پروگرامما تىلى نۆۋەتتە Java پروگراممىسى يىزىش تەجرىبىسى بار كىشىلەرگە بەكرەك ماس كىلىدۇ،
لىكىن بۇنداق دىسەم java ئۈگىنىۋاتقانلار تاشلاپ يۈرمەڭلار، kotlin نىڭ ئاساسىمۇ java, تىخى بىر تۈرنى بىرلا ۋاقىتتا java, kotlin دا تەڭ يازىدىغان ئىشلارمۇ چىقىپ قالىدۇ،
دىمەكچى بولغىنىم java نىڭ گىرامماتىكىسىنى پىششىق بىلىدىغانلارنىڭ ئىشلىتىشىگە تازا ماس كىلىدۇ،
يېڭى ئۈگەنگۈچىلەرگە نىسبەتەن ئۈگىنىشىنى داۋاملاشتۇرۇش مۇھىم،
كىيىنكى قىتىملىق يازمىلىرىمىزدا يەنىمۇ بىر قەدەم ئىچكىرلەپ تونۇشتۇرىمىز
بۇ قىتىملىق يازمىدا پەقەت سىز kotlin دىن ئىبارەت يېڭى بىر پروگرامما تىلىنىڭ بارلىقىنى ھەمدە نىمە ئۈچۈن ئىشلىتىدىغىنىمىزنى، نىمىشقا ئىشلىتىدىغىنىمىزنى بىلىۋالسىڭىزلا بولدى، تېمىدا بىرىلگەن مىساللار پەقەت kotlin دا java دا ئەمەلگە ئاشۇرغان ئىشلارنى تىخىمۇ ئاددىي، تىخىمۇ ياخشى ئەمەلگە ئاشۇرۇشقا بولىدىغانلىقىنى نۇقتا قىلىپ بىرىلدى،
بۇ قىتىم يۇقارقى مىساللارنى چوقۇم قىلالمىسىڭىز ھىچقىسى يوق،
كىيىنكى قىتىم مەن يىزىۋاتقان ئامبارنى تەپسىلىي تونۇشتۇرۇپ ئىشلىتىش ئۇسۇللىرى،مىساللار بىلەن يازىمەن،
بۇ تىلنى ئۈگىنىۋالسىڭىز ئەڭ مۇھىمى يېڭى ئىددىيلەرنى ئىگىلىۋالىسىز،
بۇ تىلنى ئۈگەنسىڭىز ھەرگىز Java ئىشلەتكەندىكى ھىسياتىڭىز بىلەن ئىشلەتمەڭ، تىلنىڭ گىرامماتىكىسىدىن ئۈنۈملۈك پايدىلانمىسىڭىز Java دا يازغاندىن پەرقىمۇ قالمايدۇ.
گىرامماتىكىسىدىن پايدىلىنىش مۇھىم،
مەسىلەن بىز ئادەتتە سانلىق مەلۇماتلارنى بىر تەرەپ قىلىشتا مودىل تۈر (model class) لارنى قۇرىۋالىمىز،
مەسىلەن
class Person
{
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getAge() {
return Age;
}
public void setAge(String age) {
Age = age;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public String getTell() {
return Tell;
}
public void setTell(String tell) {
Tell = tell;
}
private String Name;
private String Age;
private String Address;
private String Tell;
}
ئاسانلا نۇرغۇن كود بولۇپ كەتتى،
بۇ ئىنتايىن ئاددىي بىر تۈر، بۇنى بىز Kotlin دا ئەمەلگە ئاشۇرۇپ باقايلى
class Person {
lateinit var name: String
lateinit var age: String
lateinit var address: String
lateinit var tell: String
}
قىلىپ يىزىشقا بولىدۇ
يەنىمۇ بىر قەدەم ئاددىيلاشتۇرساق بۇنى ھەتتا مۇنداق يىزىۋىتىشكە بولىدۇ
data class Person(var name: String, var age: String, var address: String, var tell: String)
جاۋادا نەچچە ئون قۇر بىلەن ئىپادىلىگەننى ھەتتا بىز Kotlin دا بىرلا قۇر بىلەن ئىپادىلىيەلىدۇق
يەنە مەسىلەن بىر نەچچە مىسال بىرەي لىكىن چۈشەندۈرمەيمەن
يۇقارقى رەسىمدە مەن يىشى 26 ياشتىن 29 ياشقىچە بولغان ئادەملەرنى تاللاپ بىسىپ چىقاردىم(دىققەت قىلماي يىشىنىمۇ String قىلىپ قويۇپتىمەن، ئۆزگەرتىپ يۈرمىدىم، ئەيىپكە بۇيرىمىغايسىلەر)
class Main22Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main22)
var persons = Array
for ((name, age, address, tel) in persons.filter { it.age.toInt() in 26..29 })
{
println("Name: $name, Age: $age, address: $address, tel: $tel")
}
}
}
data class Person(var name: String, var age: String, var address: String, var tell: String)
ئىشقىلىپ ئۈگىنىپ قويۇشقا ئەرزىيدۇ،
مانا، تېما يازىمەن دەپ يەنە كىچىگە قالدىم، ئەتە مۈگىدەيدىغان بولدۇم...
ئاخىرىدا ئۈگەنگۈچىلەرگە تەۋسىيە قىلىدىغىنىم سابىرجان مۇئەللىم ئاچقان Android پروگرامما يىزىشنى ئۈگىتىش كۇرىسى،مەيلى سىز Java ئىشلىتىڭ مەيلى Kotlin ئىشلىتىڭ Kotlin مۇJava نىڭ ئاساسىغا قۇرۇلغان نەرسە، پەقەت پروگرامما تىلىنىڭ گىرامماتىكىسى ئۆزگىرىدۇ ئۇنىڭدىن باشقا Android نىڭ قۇرۇلمىسسى، تېخنىكىلار ھىچقايسىسى ئۆزگىرىپ قالمايدۇ، يادىڭىزدا بولسۇن ئۈگەنمىسڭىز مۇشۇ پىتى قىلىۋىرىسىز، لىكىن ئۈگەنسىڭىز تىرىشسىڭىز ئوخشاش كەلگۈسىڭىزنى ئۆزگەرتەلەيسىز.
ئۈگىنىش ئۈچۈن مەبلەغ سالغانلىق كەلگۈسىڭىز ئۈچۈن مەبلەغ سالغانلىق، مەيلى قايسى كەسىپنى قىلىڭ نىمىلا ئىش قىلىڭ ۋاقتىڭىزنى قىسقىسى ھاياتىڭىزنى بىكار ئۆتكۈزمەڭ، ۋاقتىڭىزنى بىكار ئۆتكۈزگەنلىك ئۆزىگە ئاسىيلىق قىلغانلىق.
----- ئۈرۈمچى سەركار يۇمشاق دېتال پەن تېخنىكىسى پروگراممىرلىرى-----
تېمىدا پايدىلىنىش ئۈچۈن ئىشلەتكەن ئۆزىمىز يىزىپ چىققان ئوچۇق كودلۇق ئامبار، ئەمەلىيەتتە ئەمەلىي تۈر يىزىش جەريانىدا ئۇچرىغان ئىھتىياجلار.داۋاملىق تولۇقلاپ مۇكەممەللەشتۈرۈپ ماڭىمىز.
تازا قىززىق تازا قىززىق يېرىگە كەلگەندە تۈگەپ قالدىغۇ بۇ... ئەجرىڭىزگە بارىكاللا ! ياخشى تېما.....ئەپ ئېچىشنى يېڭىدىن ئۆگىنىشكە باشلىغاندا كاللا قۇرۇقلا ھېچنىمىنى ھېس قىلغىلى بولمايدىكەن.گەپنىڭ قىسقىسى تۆلىگەن پۇلدىن ۋاز كېچىپ تاشلىۋەتكىسى كىلدىكەن.لىكىن داۋاملىق،قايتا-قايتا كۆرۈپ مەشىق قىلسا پۈتۈنلەي باشقىچىكەن.مەنمۇ سابىرجان مۇئەللىمنىڭ دەرسىنى بەك ياقتۇردۇم...داۋاملىق يېڭى مەزمۇنلارنى يوللاپ تۇرىشىڭزنى ئۈمىد قىلمەن. بۇ يازمىنى ئاخىرىدا aslima998 تەھرىرلىگەن. ۋاقتى2017-3-14 12:20
كۆپ رەھمەت . تىمىنى بەك چۈشۈنىشلىك ئىخچام يىزىپسىز .مەن ئاندىرويىدقا پىرگىرامما ئاچقاندا ئاۋۇ FindViewBYID نىيىزىش بەك تەس كىلەتتى ، بىر خىل ۋاقىت ئىسراپ قىلغاندەكلا . بۇ تىل بىلەن يازسا بەكلا قۇلايلىقكەن . مۇشۇنداق ياخشى بىلىملەرنى يوللاپ تۇرشىڭىزنى ئۈمۈد قىلىمەن . مىنىڭمۇ ئەپ ياساشنى ئۈگەنگۈم باتى لىكىن قانداق باشلاشنى قانداق ئۈگۈنىشنى پەقەتلا ئۇقالمىدىم بىلىۋىلىشقا تىگىشلىك بىلىمكەن رەھمەت،مەن ھازىر JAVAئۆگىنىۋاتىمەن،ھازىر بۇنى بىر پىششىقراق ئۆگىنەي tirixqan008 يوللىغان ۋاقتى2017-3-14 13:47
مىنىڭمۇ ئەپ ياساشنى ئۈگەنگۈم باتى لىكىن قانداق باشلاش ...
تېمىنىڭ ئاستىغا قاراڭ،
دەل سىز ئۈچۈندەكلا تېمىنىڭ ئاستىدا ئادېرىس قالدۇرۇپ قويدۇم
مەيلى نىمىلا ئىش قىلىڭ مەيلى نىمىلا كەسىپنى قىلىڭ ھازىرنىڭ ئۆزىدە ھەركەتلىنىڭ
ئۆزىڭىز ياخشى كۆرگەن ئىشنى قىلىڭ، ھەممە ئادەمنىڭ ئۆز ئارزۇسى ئۈچۈن تىرىشىش ھوقوقى بار سىز خىلى كۆپ تىللارنى ئۆگىنىپسىز،شۇنى سوراپ باقسام مۇشۇ پروگرامما تىللىرىنى ئۆگەنگەندە قانداق قىلساق ئۆگىنىش ئۈنۈمى يۇقىرىراق بولىدۇ؟ ئۆگەنگەندە قايسى نۇقتىلارغا دىققەت قىلىشىمىز كىرەك يۇمشاق دېتال يوللىغان ۋاقتى2017-3-14 14:28
تېمىنىڭ ئاستىغا قاراڭ،
دەل سىز ئۈچۈندەكلا تېمىنىڭ ئا ...
ئالمىنىڭ JSpatch گە قىلغان ھۇجۇمىدىن كېيىن سۇپا ئاتلاپ ئېچىشنىڭ سەل خەتىرى بارلىقىنى ھېس قىلىپ قالدىم. گەرچە كۆپلىگەن سۇپا ئاتلىغۇچىلار H5, Wecx لارغا كۆچۈۋاتقان بولسىمۇ، بىراق ئالىمنىڭ ھەر بىر قارارى ئاندرويد سۇپىسىغىمۇ چوڭقۇر تەسىر كۆرسىتىۋېتىدىكەن. مۇشۇ توغرىسىدا بىر چۈشەنچە بەرگەن بولسىلا بوپتىكەن. مەن كۆرگەن مەنبەلەردە بەكلا قالايمىقان خەۋەرلەركەن. خام يوللىغان ۋاقتى2017-3-14 14:38
سىز خىلى كۆپ تىللارنى ئۆگىنىپسىز،شۇنى سوراپ باقسام مۇ ...
كۆچۈرۈش كۆچۈرۈش يەنە كۆچۈرۈش . كۆچۈرۈپ يىزىش جەريانىدا ئاندىن شۇ تىلنىڭ گىرامماتىكا قائىدىسنى چۈشىنسىز . دەسلەپتەئۈگەنگەندە بەك تەس كىلىدۇ ،لىكىن بەل قويۇۋەتمەي داۋاملاشتۇرۇڭ . . . خام يوللىغان ۋاقتى2017-3-14 14:38
سىز خىلى كۆپ تىللارنى ئۆگىنىپسىز،شۇنى سوراپ باقسام مۇ ...
پروگرامما تىلى ئۈگىنىش جەريانى ئۇنچىۋالا مۇرەككەپ ئەمەس، تەسمۇ ئەمەس،
ھەممىدىن تەس بولغىنى ئىزچىل داۋاملاشتۇرۇش،
چۈشەنمىسىڭىز ھىچقىسى يوق، ھەممە ئادەم يېڭى باشلىغاندا چۈشەنمەيدۇ،
مەنمۇ يېڭى باشلىغان ۋاقىتلاردا چۈشەنمىگەن،
بىر دانە رەڭ تەڭشەش پروگراممىسىنى يىزىشنى بىر ھەپتە مەشىق قىلغان،
ھەر كۈنى ئەتتىگەندە ئورنۇمدىن تۇرۇپلام يىزىپ باقاتتىم، لىكىن يازغانلىرىمنىڭ نىمە نەرسە ئىكەنلىكى كاللامغا تولۇق ئايدىڭ ئەمەس ئىدى،
لىكىن ئاشۇ كودلارنى يازسام شۇنداق بىر ئىشنىڭ بولىدىغانلىقىنى بىلەتتىم،
ئەمەلىيەتتە ئۇ ۋاقىتتا بارلىق يازغانلىرىمنى چۈشىنىمەن دىسەم بۇ مۇمكىن بولمايدىغان ئىش ئىكەنتۇق،
چۈنكى ئۇنى چۈشىنىشكىمۇ پروگرامما تىلىنىڭ گىرامماتىكىسىنى بىلىش تەلەپ قىلىنىدۇ،
ئۇ ۋاقىتلاردا مەن گىرامماتىكا دىگەن نىمە ئۇنىمۇ بىلمەيىتتىم،
پەقەت ئۆزگەرگۈچى مىقدارلارنى ئىنىقلاش دىگەندەك ئاددىي ئىشلارنى بىلگەن،
ئۇ ۋاقىتتا مەن ئۈگىنىدىغانغا ھازىرقىدەك مۇنتىزىم دەرسلىكلەر يوق ئىدى،
كۈندۈزى خىزمەت قىلسام كىچىسى ئۈگىنەتتىم،
مانا ھازىر ماڭا پروگرامما يىزىش پەقەت كونۇپكا تاختىسىدىن چىققان ئاۋاز.
مۇشىنچىلىكلا ئاددىي،
مۇھىمى قانداق ئويلاپ قانداق تەپەككۇر قىلىش، ھەرگىزمۇ قەيەرنى قانداق يىزىش ئەمەس،
مەن مۇنتىزىم پروگرامما تىلىنىمۇ ئۈگىنىپ باقمىغان،
ھەم تولۇق ئوتتۇرىدىمۇ ئوقۇپ باقمىغان،
خەنزۇتىلى سەۋىيەممۇ دەششەت تۆۋەن ئىدى،
پەقەت مەندە بارى سەپلىمىسى دەششەت تۆۋەن بىر دانە خاتىرە كومپىيۇتېر بىلەن ئوتتەك قىزغىنلىقلا بار ئىدى،
3 يىلدىن كىيىنكى ھازىرچۇ؟
32 گىگابايىتلىق ئىچكى ساقلىغۇچ، 24 يادرولۇق CPU سى بار كومپىيۇتېردا سىزگە مۇشۇ خەتلەرنى يىزىۋاتىمەن،
لىكىن دىيەلەيمەن، ھازىر مەن ئۆزۈمنى مۇۋاپىقىيەت قازاندىم دەپ ئويلايمەن،
ئۆزۈم ياخشى كۆرگەن كەسىپ ئۈچۈن تىرىشىپ ئارزۇيۇمغا يەتتىم،
مەنچە ئۆزى ياخشى كۆرگەن كەسىپنى قىلىش ئالەمشۇمۇل بەخىت،
ئادەم ئۆزى سۆيگەن كەسىپنىلا ئەڭ ياخشى قىلالايدۇ،
بۇ تەرەپلەردە مەن نى نى ئالىي مەكتەپتە ئوقۇغان بالىلاردىن تەلەيلىك، ئەمەلىيەتتە خىزمەت ئورنۇمدا ئالىي مەكتەپتە ئوقۇغانلار بىلەن بىللە خىزمەت قىلىمىز، لىكىن ئۇلار پروگرامما يىزىشقا قىززىقسىمۇ يازالمايدۇ، ئۆز ۋاقتىدا ۋاقتىنى بىكار ئۆتكۈزۋىتىپ قالغانغا ئۈكىنىدۇ، بەلكىم مەنمۇ شۇ ۋاقىتتا ئالىي مەكتەپتە ئوقۇيالىغان بولسام پروگراممىر بولالماسلىقىم مۇمكىن ئىدى.
پروگرامما تىلى ئۈگىنىش ئىزچىللىقنى تەلەپ قىلىدىغان بىر جەريان،
سىز مەيلى ئاز بىلىڭ مەيلى كۆپرەك بىلىڭ پەقەت بەل قويۋەتمەي ئىزچىل داۋاملاشتۇرالىسىڭىزلا. يۇمشاق دېتال يوللىغان ۋاقتى2017-3-15 11:38
پروگرامما تىلى ئۈگىنىش جەريانى ئۇنچىۋالا مۇرەككەپ ئە ...
تەكلىپ بەرگىنىڭىزگە رەھمەت،مەن دەسلەپ ئۆگىنىشنى باشلىغاندا(مەكتەپتە)خىلى يامان ئەمەس باشلىغان،لىكىن كىيىن شۇنى بايقىدىمكى مەن مۇئەللىم يىزىپ بەرگەننى بىر ئىككى قىتىم كۆچۈرۈشتىن باشقا ئىش قىلماپتىمەن،ئۆزۈمگە تايىنىپ كىچىككىنە ئاددى بىر پروگراممىنىمۇ يازالمايدىكەنمەن،شۇنىڭدىن كىيىن ئاستا ئاستا ئۆزۈم ۋاقىت چىقىرىپ يازغاندىن كىيىن خىلى ئىلگىرلەش بولدى،مەندە قىزغىنلىق خىلى بار،بۇ ئىشقا بەكلا قىزىقىمەن،ئەمدى شۇ دىگىنىڭىزدەك ئىزچىل داۋاملاشتۇرۇپ مەشىق قلىمەن رەھمەت تېمىڭىزنى بەك ياقتۇرۇپ ئوقۇدۇم، داۋامىنى ساقلايمەن:P
بەت:
[1]
2