คอมพิวเตอร์ Windows อินเทอร์เน็ต

คุณสมบัติและวิธีการของภาษา Java การสร้างแอพพลิเคชั่นสำหรับ Windows C # ภาษาโปรแกรม

ฉันอายุ 22 ปี ฉันมีการศึกษาด้านเศรษฐศาสตร์ ปีที่แล้ว (ในเดือนกุมภาพันธ์ - มีนาคม) ฉันไม่มีทักษะการเขียนโปรแกรมเลย และเจอ Java ในเกมบน Siemens รุ่นเก่าเท่านั้น (ในรูปแบบของหน้าต่างต้อนรับ "ขับเคลื่อนโดย Java" เมื่อเริ่มเกม)

ปีที่แล้วฉันทำงานในแผนก การสนับสนุนทางเทคนิค... งานนี้ไม่ได้บอกว่าแย่หรือไม่ชอบแต่ก็ไม่น่าสนใจเป็นพิเศษ และมันก็เกิดขึ้นที่จุดหนึ่งฉันคิดว่า - คงจะดีถ้ามีงานที่คุณจะไม่ไปกับความรู้สึก "ให้ตายเถอะทำงานอีกครั้ง" แต่นั่นก็จะทำให้มีความสุข ฉันคิดว่า - ฉันจะทำอย่างไรถ้าฉันมีเวลาหนึ่งปีแบบมีเงื่อนไข ในระหว่างที่ฉันไม่จำเป็นต้องหารายได้ แต่ฉันสามารถทำสิ่งที่ต้องการได้ คำตอบได้มาโดยตัวมันเอง - ฉันจะนั่งที่บ้านและเรียนรู้การเขียนโปรแกรม

แต่การเรียนรู้ภาษาโปรแกรมเป็นขั้นตอนสู่ความสำเร็จสำหรับคนจำนวนมากที่มีความทะเยอทะยานทางอินเทอร์เน็ต มันได้กลายเป็นตรงกันกับการเขียนโปรแกรมสำหรับ เวิลด์ไวด์เว็บ... ขบเคี้ยวของการออกอากาศ กดอีเธอร์ วิธีดูผ่านผนัง รากฟันเทียม Vidar วิสัยทัศน์เชื่อว่า "การดำเนินการทันที" เป็นแม่เหล็ก มากกว่าความลึกของผิวหนัง การจัดเก็บที่ปลอดภัย ไม่มีที่ซ่อนสำหรับทุกคน ความคล่องแคล่วถือเป็นภาษากลางสำหรับอินเทอร์เน็ต บทบาทสำคัญสำหรับดาวเทียมขนาดเล็ก? ข่าวเรื่องเทคโนโลยีเหล่านี้กำลังถูกอ่านอย่างถี่ถ้วนโดยกลุ่มการเงินและโปรแกรมเมอร์

จากนั้นฉันก็ตัดสินใจว่ามันขึ้นอยู่กับฉัน ฉันเข้าใจว่ามันคงจะยากในการเรียนรู้การเขียนโปรแกรมตั้งแต่เริ่มต้น ซึ่งเป็นการย้อนกลับชั่วคราวในอาชีพการงานของฉัน (ฉันไม่สงสัยเลยว่า Junior Developer ได้รับน้อยกว่าที่ฉันทำในที่ทำงานนั้น) แต่ฉันก็ถอยกลับไปตามลำดับ เพื่อก้าวไปข้างหน้าสองก้าว ...

ตกลง. ไม่ช้าก็เร็วพูดเสร็จ เนื่องจากฉันไม่เข้าใจภาษาโปรแกรมอย่างถ่องแท้ แนวคิดแรกคือการเรียนรู้ภาษาที่ฉันได้ยินเป็นส่วนใหญ่ (ใช้เพื่อพัฒนาซอฟต์แวร์ในบริษัทที่ฉันทำงาน) - PHP ดีที่หญิงสาวพูดออกมา เธอแนะนำว่าในบริษัทของพวกเขา (กำลังพัฒนาแอปพลิเคชั่นมือถือ) androids เขียนด้วย Java + เงินเดือนของพวกเขาดูเหมือนจะดี ฉัน googled, googled, คิดและตัดสินใจเรียน Java

เพราะเบื้องหลังพาดหัวข่าว เกิดความโกลาหลทางภาษาครั้งใหญ่ เมื่อมองแวบแรก การเปลี่ยนแปลงอาจดูเยือกเย็น แต่ลึกลงไปในโลกแห่งความลับของความหมายของการเขียนโปรแกรม ความเห็นต่างกำลังเร่งตัวขึ้น การปะทุของพวกเขาจะเปลี่ยนภูมิทัศน์ของอินเทอร์เน็ตและอื่น ๆ ให้ดีขึ้น

พวงของ ภาษาสมัยใหม่การเขียนโปรแกรมมีพื้นฐานวิวัฒนาการโดยทั่วไป สำหรับคนรุ่นใหม่แต่ละรุ่น ภาษาโปรแกรมมีแนวโน้มที่จะเป็นนามธรรมมากขึ้นและห่างไกลจากคอมพิวเตอร์ที่พวกเขาสื่อสาร ภาษารุ่นแรกพูดกับคอมพิวเตอร์เป็นหนึ่งและศูนย์ของ "รหัสเครื่อง" ซึ่งตีความได้โดยตรง หน่วยประมวลผลกลางเป็นคำสั่งสำหรับจัดการข้อมูลที่เก็บไว้ในหน่วยความจำ ภาษารุ่นที่สองหรือ "การประกอบ" ได้รับการพัฒนาเพื่อให้ง่ายต่อการเขียนและอ่านคำแนะนำดังกล่าวโดยใช้รหัสที่เป็นตัวอักษรและตัวเลข ซึ่งต่อมาได้รับการแปลเป็น 1 และ 0 ซึ่งเครื่องสามารถเข้าใจได้

ขั้นตอนแรกของฉันคือความพยายามแบบดั้งเดิมในการเรียนรู้สิ่งใหม่ - ติดอาวุธให้ตัวเองด้วยหนังสือ ฝึกฝนทฤษฎี แล้วไปกันเลย! นี่คือวิธีที่ฉันได้หนังสือโดย Horstmann และ Cornell - Java พื้นฐาน. มันคือเดือนมีนาคม 2014

โดยทั่วไป ตลอดชีวิตของฉัน ฉันเรียนจากหนังสือแย่มาก นี่อาจเป็นเพราะวิธีการรับรู้ที่มีอยู่ทั่วไปในบุคคล ฉันมักจะเรียนรู้เนื้อหาจริงๆ หลังจากที่ฉันได้ลงมือทำจริง รวบรวม และเล่นกับมัน ดังนั้นความพยายามครั้งแรกของฉันในการเรียนรู้ Java จากหนังสือจึงล้มเหลว แม้ว่าหนังสือจะดี

โดยหลักการแล้วไวยากรณ์ของภาษารุ่นที่สามไม่เหมือนกับภาษาของรุ่นแรกและรุ่นที่สองไม่ได้ขึ้นอยู่กับคอมพิวเตอร์ที่ทำงาน โปรแกรมแยกต่างหากที่เรียกว่าคอมไพเลอร์ใช้เพื่อแปลรหัสเป็นภาษาเครื่อง ภาษาเหล่านี้ยังช่วยให้โปรแกรมเมอร์มีรูปแบบการแสดงออกที่เป็นธรรมชาติมากขึ้น แต่ด้วยค่าใช้จ่ายในการจำกัดช่วงของปัญหาที่ภาษาสามารถแก้ไขได้

เมื่อพูดถึงการพัฒนาภาษาคอมพิวเตอร์รุ่นที่ห้า วิวัฒนาการที่เป็นระเบียบนี้ผิดพลาดไป อันที่จริง อินเทอร์เน็ตทำให้โปรแกรมเมอร์มีความสำคัญ ไม่ใช่ภาษา เพื่อความสะดวกในการใช้งาน ความสง่างามของภาษาคอมพิวเตอร์ ที่กูรูทางวิชาการชื่นชอบ ซอฟต์แวร์ถูกสังเวย นี่เป็นสิ่งสำคัญสำหรับผู้ที่กำลังสร้างเว็บแอปพลิเคชันในเวลาที่จำกัด ดังนั้นการเพิ่มขึ้นของภาษาสคริปต์ที่รวดเร็วและสกปรกในทศวรรษที่ผ่านมาจึงเป็น "เทปเหนียว" ของเวิลด์ไวด์เว็บ

ในเดือนเมษายน ฉันเจอกลุ่ม CodeGym บน VKontakte
จากนั้นทุกอย่างก็เริ่มราวกับอยู่บนราง การแก้ปัญหาหลายๆ ปัญหาที่มาพร้อมกับทฤษฎีจำนวนน้อยๆ เป็นแนวทางในการศึกษาเนื้อหาที่เหมาะสมที่สุดอย่างชัดเจน (อ้างอิงจาก อย่างน้อย, สำหรับฉัน). ฉันนั่งอยู่ที่บ้าน ฉันนั่งทำงานและตัดสินใจ ตัดสินใจ ตัดสินใจ) จากนั้นฉันก็ทำให้แน่ใจว่าโปรแกรมน่าสนใจสำหรับฉัน ฉันจำไม่ได้ว่าวางเมาส์เหนืออะไรแบบนั้น

ภาษาเหล่านี้แพร่หลายเนื่องจากมีความยืดหยุ่นและปรับให้เข้ากับความต้องการของอินเทอร์เน็ตได้ ภาษาสคริปต์ในหลาย ๆ ด้านรับรู้ความคิดของภาษารุ่นที่สี่เป็นก้าวไปข้างหน้าในทิศทางของความเรียบง่าย เหล่านี้เรียกว่าภาษาที่ "ตีความ" กล่าวอีกนัยหนึ่ง คอมพิวเตอร์จะตีความความปรารถนาของโปรแกรมเมอร์ทีละคำสั่ง แทนที่จะ "รวบรวม" หรือแปลโปรแกรมทั้งหมดก่อนจึงจะสามารถทำงานได้ การเขียนโปรแกรมแปลเป็นเหมือนการกำจัดบทกวีที่คล้องจอง การเปรียบเทียบ การเขียนโปรแกรมที่คอมไพล์แล้ว เปรียบเสมือนการแต่งโคลง

ฉันต้องใช้เวลาสามเดือนกว่าจะถึงระดับ 20 สำหรับฉันแล้ว ดูเหมือนว่าการศึกษาภาษาต่อไปจะเร็วขึ้นมาก หากคุณได้งานเป็นโปรแกรมเมอร์แล้ว - แล้วคุณจะอยู่ในสภาพแวดล้อมนี้ 8 ชั่วโมงต่อวัน 5 วันต่อสัปดาห์ และจะพัฒนาเร็วมาก

ดังนั้น ในเดือนสิงหาคม ฉันจึงเริ่มส่งประวัติย่อของฉัน จากสองแห่งที่พวกเขาส่งงานทดสอบมาให้ฉันตามผลลัพธ์ที่ฉันไม่ได้รับข้อเสนองานใด ๆ - มองย้อนกลับไปฉันไม่แปลกใจเลยแม้แต่ครั้งเดียว - ปัญหาที่ฉันตั้งไว้บางทีฉันแก้ไขได้ แต่สไตล์ที่ไม่ดี ของการเข้ารหัสที่ฉันมี) อย่างไรก็ตาม นี่เป็นการลบเล็กน้อยของ CodeGym - ตราบใดที่ปัญหาได้รับการแก้ไขและผ่านการทดสอบ งานจะถูกนับแม้ว่ารหัสของคุณอาจปล่อยให้เป็นที่ต้องการได้มาก การติดตั้งปลั๊กอิน Checkstyle เดียวกันใน Intellij IDEA ก็เพียงพอแล้ว และสถานการณ์จะแตกต่างออกไป - มันจะเน้นที่จุด "น่าสงสัย" ในโค้ด ซึ่งจะช่วยให้คุณเขียนได้ไม่เพียงแค่ใช้งานได้ แต่ยังโค้ดที่สวยงามและถูกต้องอีกด้วย

ทำให้ภาษาสคริปต์เหมาะสำหรับการแก้ไขอย่างรวดเร็วมากกว่าโครงการขนาดใหญ่ ประการแรก ภาษาสคริปต์ได้รับการออกแบบมาเพื่อทำหน้าที่เป็นตัวกลางสำหรับโปรแกรมอื่น แทนที่จะเป็นหน่วยในตัวเอง คุณสมบัติคล้ายกาวนี้ทำให้มีความน่าสนใจสำหรับเว็บแอปพลิเคชันที่การสื่อสารระหว่างโปรแกรมมีความสำคัญ อีกเทรนด์หนึ่งที่มาก่อนเว็บ แต่ถูกกระตุ้นอย่างมากจากเว็บคือการย้ายไปสู่การเขียนโปรแกรม "เชิงวัตถุ"

วัตถุที่เป็นปัญหามักจะเป็นตัวแทนที่สะดวกในรหัสคอมพิวเตอร์ของคู่สัญญาในโลกแห่งความเป็นจริง ค่าใช้จ่ายในการชำระค่าอ็อบเจ็กต์คือ ภาษานั้นต้องมีไลบรารีขนาดใหญ่ของคลาสอ็อบเจ็กต์ต่างๆ ซึ่งทำให้ภาษามีความยุ่งยากและยุ่งยากในการใช้งานมากขึ้น อย่างไรก็ตาม ความเห็นเป็นเอกฉันท์ก็คือประโยชน์ของการจัดเก็บออบเจ็กต์ไลบรารี่นั้นมีมากกว่าค่าใช้จ่าย โดยเฉพาะอย่างยิ่งในทุกวันนี้ ด้วยพลังในการประมวลผลและหน่วยความจำที่มีมากมายและราคาถูก

อย่างไรก็ตาม ในเดือนกันยายนฉันถูกเรียกให้ไปสัมภาษณ์ครั้งแรก ตำแหน่งที่ว่างมีดังต่อไปนี้ - นักพัฒนาทุกระดับเราจะเสนอเงินเดือนที่สอดคล้องกับทักษะ
ในการสัมภาษณ์ครั้งนี้ งานมีประมาณดังนี้ - มีการให้ข้อมูลโค้ด มันเขียนถูกต้องหรือไม่และจะมีปัญหาอะไรไหม?
ฉันจำไม่ได้ว่าฉันตัดสินใจถูกต้องกี่คน โดยทั่วไป จำเป็นต้องจำเกี่ยวกับ Null ไว้ คำถามเกือบทั้งหมดเกี่ยวกับมัน - คุณไม่ควรเข้าถึงพารามิเตอร์ method โดยไม่ต้องตรวจสอบก่อน (ถ้า param! = Null)

ในกรณีพิเศษ เมื่อขนาดของปัญหา ไลบรารีสามารถย่อให้เล็กสุดได้ ข้อดีอีกประการของการเขียนโปรแกรมเชิงวัตถุคือกลุ่มผู้ใช้สามารถสร้างและแบ่งปันคลาสใหม่ของอ็อบเจ็กต์ได้ สิ่งนี้ทำให้การเขียนโปรแกรมเชิงวัตถุเหมาะอย่างยิ่งสำหรับลักษณะเหมือนกลุ่มของเครือข่าย

ไม่น่าแปลกใจที่ตอนนี้เกือบทุกภาษาการเขียนโปรแกรมที่ไม่ใช่เชิงวัตถุอยู่ในขณะนี้ ในขณะเดียวกัน ปรัชญาเบื้องหลังการเขียนโปรแกรมเชิงวัตถุเองก็กำลังเปลี่ยนไปเป็นมากกว่า ระดับสูงสิ่งที่เป็นนามธรรม ส่วนขยายที่ค่อนข้างใหม่และทันสมัยของแนวคิดนี้คือสิ่งที่เรียกว่า "รูปแบบซอฟต์แวร์" ซึ่งสะท้อนถึงโครงสร้างพื้นฐานของการแก้ปัญหาที่เคยมีมาในการพัฒนาซอฟต์แวร์ได้สำเร็จ แม่แบบอ้างถึงวัตถุเช่นอิฐและปูนสำเร็จรูป

เป็นผลให้ฉันได้รับการเสนอให้ทำงานในเดือนแรกฟรี (ในฐานะฝึกงาน) จากนั้นเงินเดือนซึ่งต่ำกว่า (แม้ว่าจะไม่มาก) เมื่อเทียบกับที่ทำงานที่ฉันอยู่

ฉันเข้าใจดีว่าฉันไม่ควรคาดหวังข้อเสนอดีๆ เพราะฉันรู้ทฤษฎีเล็กๆ น้อยๆ ฝึกฝนใน CodeGym เท่านั้น ไม่มีประสบการณ์ และอื่นๆ เลยตกลงกันว่าจะออกภายใน 2 อาทิตย์ (เวลาอันสมควรที่จะเลิกจ้างในที่เก่า)

ในขณะที่การเขียนสคริปต์และการเขียนโปรแกรมเชิงวัตถุแสดงถึงแนวโน้มใหม่ที่สำคัญ การเปลี่ยนแปลงครั้งใหญ่ที่สุดในทศวรรษที่ผ่านมาอยู่ที่คำจำกัดความของภาษาโปรแกรมจริงๆ สิ่งสำคัญที่สุดต่อความสำเร็จของภาษาเหล่านี้คือการฝังตัวในสภาพแวดล้อมที่เชื่อมต่อกับอินเทอร์เน็ต ตัวอย่างเช่น คอมไพเลอร์แบบทันท่วงทีช่วยให้แน่ใจว่าแอพเพล็ต เมื่อแปลเป็นรหัสเครื่องแล้ว สามารถบายพาสได้ในภายหลัง รหัสไบต์... แน่นอนว่าการได้รับความไว้วางใจจากโปรแกรมเมอร์รุ่นเยาว์นั้นต้องการมากกว่าซอฟต์แวร์อัจฉริยะ

ควบคู่ไปกับสิ่งนี้ ฉันได้ส่งเรซูเม่ของฉันไปที่บริษัทอื่น บริษัทนี้เสนอสิ่งต่อไปนี้:
- การฝึกอบรม Java EE 2 เดือน (2 ครั้งต่อสัปดาห์เป็นเวลา 4 ชั่วโมง)
- หากคุณแสดงผลได้ดี (คุณปกป้องโครงการของคุณสำเร็จ ซึ่งคุณเขียนมาเป็นเวลาสองเดือนนี้) คุณจะได้รับข้อเสนอการจ้างงาน

บริษัทดีมาก ต่างประเทศ เป็นที่รู้จักกันดี และสภาพการทำงานดีเยี่ยม พูดได้คำเดียว ว่าฉันอยากไปที่นั่นมากกว่าไปยังสถานที่ที่พวกเขายื่นข้อเสนอให้ฉันแล้ว
การคัดเลือกสำหรับการฝึกอบรมจากเธอเกี่ยวข้องกับ 3 ขั้นตอน:
1. ปฏิบัติงานจริงที่บ้าน
2. หากสำเร็จ ขอเชิญทดลองคอมพิวเตอร์ในสำนักงาน
3. กรณีสอบสำเร็จ จะถูกสัมภาษณ์ในวันเดียวกัน

ตามแนวคิดแล้ว ทั้งสองภาษาเป็นตัวแทนของการเดิมพันที่แตกต่างกันอย่างมากในอนาคตของอินเทอร์เน็ต Mr. Hejlsberg ไม่ได้พูดเพียงคนเดียว เน้นว่าอินเทอร์เน็ตเกี่ยวกับการส่งข้อมูล ไม่ใช่การประมวลผลข้อมูล ประการแรก ไม่สามารถดำเนินการจัดการข้อมูลทางคณิตศาสตร์หรือตรรกะได้

โปรแกรมเมอร์จะออกคำสั่งไปยังคอมพิวเตอร์ในลักษณะเดียวกับที่หัวหน้าคนงานในไซต์ก่อสร้างตะโกนใส่คนงานของเขา อย่างไรก็ตาม มีความเป็นนามธรรมในระดับที่สูงขึ้น - ตัวอย่างเช่น สถาปนิกใช้เวลาออกแบบอาคารมากกว่าการออกคำสั่ง เป็นภาษาการสร้างแบบจำลอง "ภาพรวม" และได้รับการยอมรับจากโปรแกรมเมอร์หลายคน แม้ว่าจะไม่ได้จำกัดอยู่เพียงการเขียนโปรแกรมก็ตาม

ฉันรับมือกับงานที่ใช้ได้จริงโดยไม่มีปัญหา - ขอบคุณมากสำหรับ CodeGym และงานของพวกเขา หลังจากนั้นงานเหล่านี้ดูค่อนข้างง่าย มี 3 งาน: ใน RegExp (Google ช่วยเพราะตัวฉันเองทนไม่ได้และจำไม่ได้) ในอัลกอริธึม (ค่อนข้างง่ายเพื่อให้ฉลาดกว่า) และในการเขียน / อ่านจากไฟล์ (มีจำนวนมาก เช่นในหลักสูตร CodeGym) ฉันได้รับเชิญให้ไปสอบคอมพิวเตอร์

จนถึงขณะนี้ เครื่องมือเหล่านี้ยังไม่ได้รับการแปลโดยตรงอย่างครบถ้วน โปรแกรมงาน... คาดว่าจะเห็นซุปตัวอักษรทั้งหมดของภาษาใหม่ในทศวรรษหน้า ผู้ป่วยที่วัดความสำเร็จในแง่ของบรรทัดโค้ดที่เขียนขึ้นไม่น่าจะเห็นอกเห็นใจกับวิธีใหม่ในการพัฒนาซอฟต์แวร์นี้

บนขอบฟ้า ภาษาโปรแกรมเผชิญกับความท้าทายอย่างมากในการช่วยให้อินเทอร์เน็ตเป็นที่ที่ชาญฉลาดขึ้น ปีที่แล้ว Tim Berners-Lee ผู้ประดิษฐ์ World Wide Web ได้ตีพิมพ์แถลงการณ์สำหรับ Semantic Web วิสัยทัศน์ของเขาคือคอมพิวเตอร์ควรสามารถรับรู้ความหมายของข้อมูลบนอินเทอร์เน็ตในบริบท และให้ข้อมูลที่เกี่ยวข้องแก่ผู้ใช้มากกว่าเว็บเบราว์เซอร์ในปัจจุบัน

ฉันเตรียมการทดสอบโดยใช้เว็บไซต์ที่น่าสงสัย (http://www.quizful.net/job-role/junior-java-developer) การทดสอบเหล่านี้ช่วยได้มาก บางคำถามก็ทับซ้อนกันในท้ายที่สุด ฉันทำแบบทดสอบสำเร็จ พวกเขาเริ่มสัมภาษณ์ฉัน

ฉันคงจะไม่มีวันลืมการสัมภาษณ์ครั้งนี้ในชีวิตของฉัน

ทั้งหมดที่ผู้สัมภาษณ์ฉันต้องการได้ยินจากฉันคือพื้นฐานของทฤษฎี Java เช่น:
- ข้อยกเว้นที่ตรวจสอบแตกต่างจากที่ไม่ได้ตรวจสอบอย่างไร
- วิธีการใดที่คลาส Object มีและทำไมจึงมีความจำเป็น
- คอลเลกชั่นคืออะไรและทำไมถึงเป็น
- และอีกเล็กน้อยเกี่ยวกับมัลติเธรด

มีหลายวิธีที่สิ่งนี้อาจเกิดขึ้นได้ แน่นอน ข้อมูลเชิงความหมายบางอย่างอาจอยู่ในตัวข้อมูลเอง ในนั้นมีความเป็นไปได้สำหรับภาษาที่ออกแบบมาโดยเฉพาะสำหรับปัญญาประดิษฐ์ ภาษาดังกล่าวมีมานานหลายทศวรรษแล้ว เช่นเดียวกับทฤษฎีของดาร์วิน การพิจารณาว่าสิ่งใดเหมาะสมที่สุดนั้นขึ้นอยู่กับสภาพแวดล้อมซึ่งเปลี่ยนแปลงอยู่ตลอดเวลา ทั้งหมดนี้เกิดขึ้นได้เร็วแค่ไหน? คาดหวังซุปตัวอักษรทั้งหมดของภาษาใหม่ในทศวรรษหน้า

หลักสูตรการเขียนโปรแกรมในลิทัวเนียเริ่มแพร่ระบาดหลังฝนตก ไม่ใช่เรื่องแปลก - ในปัจจุบัน โปรแกรมเมอร์ส่วนใหญ่ขาดแคลน และธนาคาร บริษัททุนตะวันตกหลายแห่งในลิทัวเนียกำลังเพิ่มพื้นที่ล่าสัตว์สำหรับโปรแกรมเมอร์ที่มีพรสวรรค์เท่านั้น

CodeGym เป็นหลักสูตรที่ยอดเยี่ยม มันสอนวิธีแก้ปัญหาและโปรแกรมให้คุณ แต่ทฤษฎี (สำหรับการสัมภาษณ์) จำเป็นต้องเรียนรู้แยกกัน ซึ่งฉันเชื่อว่าว่ายน้ำในคำถามเหล่านี้เหมือนปลาในพิพิธภัณฑ์สัตว์น้ำ

ในหนึ่งสัปดาห์ ฉันได้ศึกษาบทช่วยสอนนี้อย่างละเอียดและไปสัมภาษณ์อีกครั้งเมื่อวันก่อนเมื่อฉันถูกคาดหวังให้ทำงานใหม่ เห็นได้ชัดว่าคนที่สัมภาษณ์ฉันมักจะติดอยู่กับจุดมุ่งหมายของฉัน (ฉันรู้ว่าถ้าฉันลงทะเบียนในการฝึกงานครั้งนี้ ยิ่งขึ้นอยู่กับฉันเท่านั้น - ในอีกสองเดือนฉันจะได้รู้ทุกสิ่งที่ฉันต้องการ) อย่างไรก็ตาม ฉันเข้าร่วมการฝึกงานนี้และปฏิเสธที่จะไปทำงานในสถานที่ที่ฉันได้รับการเสนอก่อนหน้านี้

หลักสูตรจะไม่ทำให้คุณผิดหวัง แต่พวกเขาคาดหวังว่าการซื้อเงินจำนวนมากเพื่อจ่ายเงินจะไร้เดียงสา โปรแกรมเมอร์ที่ใฝ่ฝันบางคนหลีกเลี่ยงนายจ้างเพราะพวกเขาต้องใช้เวลาและความพยายามอย่างมาก Jankauskienė รับรองว่าสิ่งนี้จะได้รับการแก้ไขโดยการแลกเปลี่ยนแรงงานโดยการจัดทำแผนปฏิบัติการส่วนบุคคล สามารถรับได้หลังจากสำเร็จการศึกษาจากคณิตศาสตร์หรือวิทยาศาสตร์ที่แน่นอนอื่น ๆ และมีความรู้อย่างเป็นระบบ

โปรแกรมเมอร์หน้าใหม่ไม่สนใจทุกอย่าง

Ivanauskas เน้นว่าแต่ละบริษัทมีคำจำกัดความที่แตกต่างกันสำหรับโปรแกรมเมอร์มือใหม่ เราเป็นโปรแกรมเมอร์มือใหม่ที่มีประสบการณ์ถึงสองปี เรากำลังจ้างพวกเขาและตอนนี้เรามีจำนวนมาก ตามที่เธอกล่าว โปรแกรมเมอร์รุ่นเยาว์อาจทำงานหลังจากจบหลักสูตรการเขียนโปรแกรมห้าเดือน แต่ผู้เชี่ยวชาญนี้อาจขาดความรู้

ใน 2 เดือน เราได้รับการแนะนำให้รู้จักกับหัวข้อมากมายจาก Java EE เช่น Servlets, JSP, Hibernate JSF, Spring และอื่นๆ อีกมากมาย - จากการฝึกงาน เราจึงคุ้นเคย (มีแนวคิดคร่าวๆ) เกี่ยวกับ main stack ของเทคโนโลยี Java EE นอกจากนี้ ในระหว่างการฝึกงาน เราเขียนโครงการของเราเอง ซึ่งต้องยื่นขอการจ้างงานที่ทางออก

ตามความเห็นของ Rimkute ความปรารถนาสำหรับโปรแกรมมักจะแสดงออกโดยคนที่ไม่พอใจกับงานหรือไม่ได้รับเลย นอกจากนี้ยังมีผู้ที่สมัครหลักสูตรการเขียนโปรแกรมสำหรับสถานที่ที่ดีที่สุดที่เสนอโดยนายจ้างหรือผู้ที่ฝันถึงธุรกิจของตัวเองเป็นจำนวนมาก อย่างไรก็ตาม สิ่งที่สำคัญที่สุดคือความพร้อมและทัศนคติของบุคคลต่อกระบวนการเรียนรู้

เริ่มต้นสามารถพบครึ่งพันยูโร

ผลลัพธ์ขึ้นอยู่กับบุคคล ต้องใช้เวลาอย่างน้อยห้าเดือน เมื่อจบหลักสูตร การสอบแบบมืออาชีพรอคุณอยู่ - ผู้ที่ยึดมั่นและยึดมั่นและไม่แม้แต่จะลองทำด้วยซ้ำ ดูเหมือนว่าเขาจะเป็นผู้ใหญ่ แต่แม่ของเขาเช็คอินและทำให้แน่ใจว่าเด็กที่โตแล้วจะมาเยี่ยม Mousavi ผู้เข้าร่วมหลักสูตรโปรแกรมเมอร์ เขาแย้งว่าโปรแกรมเมอร์มือใหม่สามารถคาดหวังเงินเดือนได้ประมาณ 500 ยูโร แต่คนอื่นๆ ก็สามารถรับเงินเดือนที่สูงขึ้นได้เช่นกัน เพราะทั้งหมดขึ้นอยู่กับวิธีที่บุคคลนั้นแนะนำนายจ้างและแรงจูงใจของพวกเขาคืออะไร

ฉันจำได้แค่ความรู้สึกแรกของฉันตอนที่ฉันเรียนครั้งแรก ฉันดูงานของโครงการนี้ (เผยแพร่ทันทีในการบรรยายครั้งแรก) และไม่เข้าใจอย่างละเอียดถี่ถ้วนว่าจะเริ่มต้นที่นี่ที่ไหนและทำอย่างไร

ฉันยังจำได้ว่าต้องใช้เงินเท่าไหร่ในการทำสำเร็จ ในช่วงสองเดือนนี้ ความคิดเกือบทั้งหมดในหัวของฉันคือการจ้างงานที่ประสบความสำเร็จและการเติมเต็มความฝันอยู่ในมือของฉันและไม่มีอะไรมากไปกว่านี้ ไม่ได้ขึ้นอยู่กับใครว่าจะทำได้หรือไม่ จากฉันเท่านั้น ฉันลาออกจากงานแล้ว แทบมีเงินเหลืออยู่เลย และมันก็ยากจริงๆ ฉันนั่งตอนเช้านั่งตอนบ่ายนั่งตอนเย็น แต่ไม่เบื่อที่จะชื่นชมยินดี - ฉันจำไม่ได้ว่าเมื่อฉันอุทิศตัวเองให้กับบางสิ่งด้วยความหลงใหลเช่นนี้ ครั้งนี้ช่วยให้ฉันตระหนักอีกครั้งว่าฉันชอบเขียนโปรแกรมมากแค่ไหนและอยากทำงานในด้านนี้มากแค่ไหน

นอกจากนี้ ท่านแนะนำว่าควรสังเกตว่า เพื่อที่จะเป็นนักพัฒนาที่ดี คุณลักษณะเฉพาะของวิธีการบางอย่าง เช่น การมุ่งเน้นความสนใจและเน้นงานเดียว มีความสำคัญ ไม่ว่าบุคคลจะได้รับความรู้ในด้านของ การเขียนโปรแกรมที่มหาวิทยาลัยหรือสถาบันการศึกษาอื่น ๆ ไม่สำคัญ

นอกจากนี้ ท่านแนะนำว่าควรสังเกตว่า เพื่อที่จะเป็นนักพัฒนาที่ดี คุณลักษณะเฉพาะของวิธีการบางอย่าง เช่น การมุ่งเน้นความสนใจและเน้นงานเดียว มีความสำคัญ ไม่ว่าบุคคลจะได้รับความรู้ในด้านของ การเขียนโปรแกรมที่มหาวิทยาลัยหรือสถาบันการศึกษาอื่น ๆ ไม่สำคัญ

เมื่อสำเร็จการศึกษา ฉันนำเสนอโครงการของฉัน ฉันปกป้องมันได้ดีมาก เห็นได้ชัดว่าดีกว่าที่คาดไว้มาก และตามข้อยกเว้น ฉันไม่ได้ได้รับการว่าจ้างสำหรับตำแหน่งเริ่มต้นของฉัน แต่สำหรับตำแหน่ง Middle Java Developer ทันที วันที่ 9 ธันวาคม 2014 ฉันไม่อยากจะเชื่อเลย แต่การเสนองานอยู่ตรงหน้าฉันบนจอมอนิเตอร์ วิศวกรรมซอฟต์แวร์. สิ่งนี้เกิดขึ้น

วันที่ 15 ธันวาคม ฉันไปทำงาน ฉันไม่เคยคิดเลยว่า “บัดซบ ฉันไม่อยากทำงาน” ทุกวันออกจากบ้านตอนเช้า ฉันรู้ว่าไปทำงานทำไม จะทำอะไร และอยากได้มากแค่ไหน นี่มันมีความสุขเป็นบ้าเลย มันคุ้มค่าและคุ้มกับราคาที่ต้องจ่ายเพื่อบรรลุความฝันของคุณ

ขอให้ทุกท่านที่อยากเป็นโปรแกรมเมอร์ก้าวไปข้างหน้าเพื่อบรรลุเป้าหมายของคุณ เธอเป็นมากกว่าของจริง เธอสนิทกันมาก แต่คุณต้องจ่ายเพื่อเธอ การจ่ายเงินด้วยเวลาที่เสียไป ความกังวลใจ เพราะการเรียนรู้บางสิ่งตั้งแต่เริ่มต้นนั้นไม่ใช่ขั้นตอนที่ง่ายที่สุดจริงๆ CodeGym ช่วยให้ฉันทำตามขั้นตอนแรกเหล่านี้ได้อย่างง่ายดาย และฉันไม่ได้หันหลังให้กับการเขียนโปรแกรมตั้งแต่เนิ่นๆ เนื่องจากดูเหมือนความซับซ้อนและทฤษฎีที่มากมาย ดังนั้นฉันจึงสามารถนำความคิดที่ค่อนข้างบ้าของฉันเกี่ยวกับการเปลี่ยนแปลงที่รุนแรงในด้านกิจกรรมระดับมืออาชีพ (แม้ในกรณีที่ไม่มีการศึกษาด้านเทคนิค) จนจบ

และคุณจะทำได้อย่างแน่นอน

ส่วนนี้ครอบคลุมพื้นฐานของภาษาเชิงวัตถุ การเขียนโปรแกรม Java... Java ไม่ได้เป็นเพียงภาษาเท่านั้น แต่ยังเป็นแพลตฟอร์มสำหรับการสร้างและเรียกใช้แอปพลิเคชันตามภาษานี้ ภาษาเดิมเรียกว่าโอ๊ค ("โอ๊ค") และได้รับการพัฒนาโดยเจมส์ กอสลิงสำหรับการเขียนโปรแกรมอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค ต่อมาเปลี่ยนชื่อเป็น Java และใช้เพื่อเขียนแอปพลิเคชันไคลเอ็นต์และซอฟต์แวร์เซิร์ฟเวอร์

ภาษานี้ตั้งชื่อตามแบรนด์กาแฟ Java ซึ่งเป็นที่รักของโปรแกรมเมอร์บางคน ซึ่งเป็นสาเหตุที่โลโก้อย่างเป็นทางการของภาษานี้แสดงถึงถ้วยกาแฟนึ่ง

เกี่ยวกับการออกเสียงในภาษารัสเซียเช่นเดียวกับในหลาย ๆ เรื่องมีการสร้างบรรทัดฐานที่แตกต่างกันสองแบบ - ยืมภาษาอังกฤษ ("dʒɑːvə" - "java") และ "java" ประจำชาติซึ่งสอดคล้องกับการออกเสียงแบบดั้งเดิมของชื่อเกาะ ของจาวา ซันยังคงรักษาการออกเสียงที่พูดภาษาอังกฤษได้ทั่วโลก บางครั้งคำสแลง “คางคก” ก็ถูกใช้ในชีวิตประจำวันเช่นกัน (เช่น ภาพของคางคกอยู่ในปฏิทินของกลุ่มผู้ใช้ Java)

Object Oriented Programming Language Java

ภาษาการเขียนโปรแกรม Java ได้รับการพัฒนาโดย Sun Microsystems และเป็นแบบเชิงวัตถุ แหล่งที่มา แอปพลิเคชัน Javaแปลงโดยคอมไพเลอร์ javacเป็น bytecode พิเศษสำหรับดำเนินการภายใต้การควบคุมของ Java Virtual Machine

Java Virtual Machine (JVM) เป็นโปรแกรมที่ประมวลผล bytecode และส่งผ่านคำสั่งไปยังฮาร์ดแวร์ในฐานะล่าม ข้อดีหลักประการหนึ่ง วิธีนี้การทำงานของโปรแกรมเป็นอิสระอย่างสมบูรณ์จาก ระบบปฏิบัติการและฮาร์ดแวร์ ซึ่งอนุญาตให้แอปพลิเคชัน Java ทำงานบนอุปกรณ์ใดก็ได้ที่มีเครื่องเสมือนที่สอดคล้องกัน

คุณสมบัติที่สำคัญอีกประการของเทคโนโลยี Java คือระบบความปลอดภัยที่ยืดหยุ่น ซึ่งภายในนั้นการทำงานของโปรแกรมจะถูกควบคุมโดยเครื่องเสมือนอย่างสมบูรณ์ การกระทำใด ๆ ที่ละเมิดสิทธิ์ที่กำหนดให้กับโปรแกรม (เช่น ความพยายามในการเข้าถึงข้อมูลโดยไม่ได้รับอนุญาตหรือเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น) ทำให้โปรแกรมหยุดชะงักทันที

ข้อเสียของแนวคิดในการใช้เครื่องเสมือนรวมถึงประสิทธิภาพที่ลดลงซึ่งมีการต่อสู้ในรูปแบบต่างๆ:

  • การประยุกต์ใช้เทคโนโลยีการแปลรหัสไบต์เป็นรหัสเครื่องโดยตรงระหว่างการทำงานของโปรแกรม - เทคโนโลยี JIT
  • การใช้โค้ดเชิงแพลตฟอร์มอย่างกว้างขวาง (โค้ดเนทีฟ) ในไลบรารีมาตรฐาน เช่น SWT;
  • ฮาร์ดแวร์ที่ให้การประมวลผล bytecode แบบเร่งรัด เช่น เทคโนโลยี Jazelle ซึ่งสนับสนุนโดยโปรเซสเซอร์ ARM บางตัว

เวอร์ชัน Java

Java 1.0

การพัฒนา Java เริ่มต้นในปี 1990 ในปี 2539 ครั้งแรก รุ่นทางการ- จาวา 1.0.

Java 1.2

ข้อมูลจำเพาะ JDK 1.2 ที่อัปเดตได้รับการพัฒนาในปี 1998 และออกมาในชื่อ Java 2 ภาษาไม่ได้เปลี่ยนแปลงมากนัก แต่แพลตฟอร์มได้รับการเพิ่มเติมจำนวนมาก:
  • ห้องสมุดสวิงเพื่อการพัฒนา หน้าจอผู้ใช้;
  • ชุดของสะสม;
  • รองรับไฟล์นโยบายและใบรับรองดิจิทัลของผู้ใช้
  • ไลบรารีการช่วยสำหรับการเข้าถึง
  • จาวา 2D;
  • สนับสนุน เทคโนโลยีการลากและวาง;
  • รองรับ Unicode เต็มรูปแบบ รวมถึงภาษาญี่ปุ่น จีน และเกาหลี
  • รองรับการเล่นไฟล์เสียงหลายรูปแบบ
  • คอมไพเลอร์ JIT

Java 5.0

ในปี 2547 ข้อกำหนด Java 5.0 ออกมา นับตั้งแต่มีการพัฒนาเวอร์ชันนี้ การจัดทำดัชนีอย่างเป็นทางการก็เปลี่ยนไป แทนที่จะเป็น Java 1.5 การเรียก Java 5.0 จะถูกต้องกว่า การจัดทำดัชนีภายในของ Sun ยังคงไม่เปลี่ยนแปลง - 1.x

รวมการเปลี่ยนแปลงเล็กน้อยโดยไม่มีการเปลี่ยนแปลงการจัดทำดัชนี คำว่า "อัปเดต" ใช้สำหรับสิ่งนี้ ตัวอย่างเช่น Java Development Kit 5.0 Update 25 การอัปเดตคาดว่าจะรวมถึงการแก้ไขจุดบกพร่องและส่วนเพิ่มเติมเล็กน้อยใน JVM API

ในเวอร์ชัน Java 5.0มีการเพิ่มเติมพื้นฐานหลายประการ:

  • จำแนกประเภท enum;
  • คำอธิบายประกอบ - ความสามารถในการเพิ่มข้อมูลเมตาให้กับข้อความของโปรแกรมที่ไม่ส่งผลต่อการทำงานของโค้ด แต่สามารถใช้เพื่อรับข้อมูลต่างๆ เกี่ยวกับโค้ดและการดำเนินการของโค้ด
  • เมธอดที่มีจำนวนพารามิเตอร์ที่ไม่ได้กำหนด
  • อนุญาตให้นำเข้าฟิลด์และวิธีการคงที่
  • ในคอลเลกชันคุณสามารถใช้ ตัววนซ้ำวัตถุ ( แต่ละ);
  • การใช้งาน javadocข้อคิดเห็นสำหรับการเตรียมเอกสารโดยอัตโนมัติ
  • เครื่องมือการเขียนโปรแกรมทั่วไป ยาชื่อสามัญ.

Java 6

ในเดือนธันวาคม 2549 มีการเปิดตัวอีกรุ่นหนึ่ง Java 6... นอกจากรุ่นนี้แล้ว ยังมีการเปลี่ยนแปลงในการจัดทำดัชนีอย่างเป็นทางการ - แทนที่จะเป็น Java 6.0 เวอร์ชันดังกล่าวจะแสดงเป็น Java 6 การเปลี่ยนแปลงเล็กน้อยดังเช่นใน รุ่นก่อนหน้ารวมอยู่ในการอัปเดตเวอร์ชันปกติ เช่น Java Standard Edition Development Kit 6 Update 25

ในเวอร์ชัน Java 6มีการเปลี่ยนแปลงที่สำคัญดังต่อไปนี้ "สังเกตเห็น" โดยนักพัฒนา:

  • Swing ปรับปรุงประสิทธิภาพของ OpenGL และ DirectX;
  • เพิ่ม GifWriter สำหรับการทำงานกับไฟล์ .gif;
  • คลาส-สตรีมสำหรับการอ่านและถ่ายโอนข้อมูลที่บีบอัดพร้อมใช้งาน พร้อมความสามารถในการถ่ายโอนผ่านเครือข่าย
  • การเก็บถาวร - ลบข้อจำกัดจำนวนไฟล์ในไฟล์เก็บถาวรแล้ว (ก่อนหน้านี้ 64 Kb) ความยาวของชื่อไฟล์เพิ่มขึ้น (จากเดิม 256 ตัวอักษร)
  • ยกเลิกการจำกัดปริมาณในเวลาเดียวกัน เปิดไฟล์(เมื่อก่อนปี 2000)
  • จัดระบบการจัดการแคชและเพิ่มการสนับสนุนสำหรับพารามิเตอร์ "no-cache" ในคำขอ HTTP
  • พร้อมกับปฏิทินเกรกอเรียนและพุทธที่มีอยู่แล้ว เพิ่มการรองรับปฏิทินจักรพรรดิญี่ปุ่น
  • คุณสามารถใช้ Java HTTP Server เพื่อสร้างเซิร์ฟเวอร์ HTTP เต็มรูปแบบพร้อมคุณสมบัติการทำงานที่จำเป็นขั้นต่ำ
  • ความเร็วในการคำนวณและความเร็วของการดำเนินการ I / O เพิ่มขึ้น

Java7

รุ่นที่วางจำหน่าย Java7เกิดขึ้นในเดือนกรกฎาคม 2554 น่าเสียดายในเวอร์ชั่นสุดท้าย Java Standard Edition7ไม่รวมการเปลี่ยนแปลงที่วางแผนไว้ก่อนหน้านี้จำนวนหนึ่งซึ่งได้ตัดสินใจเพิ่มลงใน Java Standard Edition 8.

วี เวอร์ชั่นใหม่ชื่อ Java Standard Edition7นอกจากการแก้ไขข้อผิดพลาดแล้ว ยังมีการนำนวัตกรรมใหม่ๆ เข้ามาอีกด้วย:

  • มีการเพิ่มตัวตรวจสอบประเภทใหม่ที่เร็วกว่าซึ่งเรียกว่าตัวตรวจสอบประเภทการตรวจสอบ
  • ในคอลเลกชัน (ชุดข้อมูล) เพิ่มอินเทอร์เฟซสำหรับการจัดคิว
  • การปรับเปลี่ยนตัวโหลดคลาส (ตัวโหลดคลาส);
  • URLClassLoader - ปล่อยทรัพยากรที่จัดโดย classloader โดยใช้เมธอด close ()
  • JDBC อัปเดตเป็นรุ่น 4.1, Rowset เป็นเวอร์ชัน 1.1;
  • เพิ่มรูปลักษณ์และความรู้สึกรุ่นใหม่;
  • nio.2 - อินเทอร์เฟซใหม่สำหรับการเข้าถึงระบบไฟล์, การโต้ตอบ IO แบบอะซิงโครนัสที่ปรับขนาดได้, การทำงานเต็มรูปแบบด้วยไฟล์เก็บถาวร zip / jar เช่นเดียวกับ ระบบไฟล์;
  • รองรับ Unicode เวอร์ชัน 6.0;
  • ทั่วไป - เปลี่ยนการอนุมานประเภทเมื่อสร้างวัตถุ
  • โลแคล - โลแคลของผู้ใช้และส่วนต่อประสานกราฟิกแยกจากกัน การจัดรูปแบบของข้อความและการแสดงข้อความบนหน้าจอเป็นแบบ "โลคัล" ที่เป็นอิสระ

Java8

รุ่นที่วางจำหน่าย Java8เกิดขึ้นในเดือนมีนาคม 2557 รายการนวัตกรรม:

  • รองรับนิพจน์แลมบ์ดาอย่างเต็มที่
  • คำสำคัญค่าเริ่มต้นในอินเทอร์เฟซเพื่อรองรับการทำงานเริ่มต้น
  • การอ้างอิงวิธีการ
  • อินเทอร์เฟซการทำงาน (ภาคแสดง ผู้ให้บริการ ฯลฯ)
  • สตรีมสำหรับการทำงานกับคอลเล็กชัน
  • API ใหม่สำหรับการทำงานกับวันที่

เทคโนโลยีจาวา

เทคโนโลยี Java มีหลายกลุ่มหลัก:

เทคโนโลยีคำอธิบาย
Java SE - Java Standard Edition เทคโนโลยี Core Java รวมถึงคอมไพเลอร์, API, Java Runtimeสิ่งแวดล้อม; ใช้เพื่อสร้างแอปพลิเคชันเดสก์ท็อปที่กำหนดเอง
Java EE - Java Enterprise Edition เทคโนโลยีการพัฒนาซอฟต์แวร์ระดับองค์กร ใช้สำหรับพัฒนาแอพพลิเคชั่นเว็บ
Java ME - Java Micro Edition เทคโนโลยีสำหรับสร้างโปรแกรมสำหรับอุปกรณ์ที่มีกำลังคอมพิวเตอร์จำกัด เช่น โทรศัพท์มือถือ
JavaFX เทคโนโลยีสำหรับการสร้างส่วนต่อประสานกราฟิกสำหรับแอปพลิเคชันองค์กรและธุรกิจ
การ์ดจาวา เทคโนโลยีสำหรับสร้างโปรแกรมสำหรับแอพพลิเคชั่นที่ทำงานบนสมาร์ทการ์ดและอุปกรณ์อื่นๆ ในปริมาณจำกัด

เครื่องมือพัฒนา Android, Java สำหรับ Android

Javaใช้อย่างแข็งขันในการสร้าง แอปพลิเคชั่นมือถือสำหรับสภาพแวดล้อมการทำงาน Android... ในกรณีนี้ โปรแกรมต่างๆ จะถูกคอมไพล์เป็น bytecode ที่ไม่ได้มาตรฐานเพื่อใช้ใน เครื่องเสมือนดัลวิก. สำหรับการรวบรวมดังกล่าวจะใช้เครื่องมือเพิ่มเติมที่พัฒนาโดย Google - ชุดพัฒนาซอฟต์แวร์ (SDK).

คุณยังสามารถพัฒนาแอพพลิเคชั่นใน Android Studio, NetBeans หรือ Eclipse โดยใช้ปลั๊กอิน เครื่องมือพัฒนา Android (ADT)หรือใน IntelliJ IDEA เวอร์ชัน JDK ต้องมีอย่างน้อย 5.0