abshammeri

عادات تكتسبها من لغات البرمجة

43 ردود في هذا الموضوع

مبرمج Visual Basic :

هذا لا أطيقه ولا أطيق العمل معه ( معلش :-) ) ، بينما نحن نتشاور حول حل المشكلة تتفاجأ باقتراحاته :

- إنشاء TextBox في Form .

- ربط Form مع Form .

- استخدام الأداة Sql للاتصال بقاعدة البيانات عن طريق Wizard .

هو يعرف كل شيء عن اللغة .. ولكن عقله الباطن لا يتحدث إلا عن GUI ، و لا يفكر إلا في هذا .. لذلك العمل معه صعب جداً .

لماذا هذه النظرة لمبرمجى الفيجوال بيسيك؟

دائما عندما يكون الحديث حول لغات البرمجة تجد العديد ينظرون للفيجوال بيسيك ومبرمجيه بنظرة قد تشعر فيها ببعض الاستهزاء

مثلا فى كلامك أخى عبد الله تشعرنى بأن مبرمجى الفيجوال بيسيك تفكيرهم سطحى جدا

طيب ماذا لو كانت C#؟

هل ستنظر إليها نفس النظرة؟

مع أنهما تقريبا لغة واحدة فالفروقات بينهما قليلة والكثير جدا جدا ممن يستخدمون الفيجوال بيسيك يستطيعون استخدام C# بكل سهولة وقلما تجد مبرمجا يبرمج بالفيجوال بيسيك ولا يستطيع البرمجة بالسى شارب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالمناسبة الاسلوب الذى اتبعته فى الجافا غير جيد من وجهة نظرى لانه لا يطبق ال Interface Segregation

العادات الخاطئة لا تعنى العموم

تم تعديل بواسطه طارق إبراهيم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لماذا هذه النظرة لمبرمجى الفيجوال بيسيك؟

دائما عندما يكون الحديث حول لغات البرمجة تجد العديد ينظرون للفيجوال بيسيك ومبرمجيه بنظرة قد تشعر فيها ببعض الاستهزاء

مثلا فى كلامك أخى عبد الله تشعرنى بأن مبرمجى الفيجوال بيسيك تفكيرهم سطحى جدا

طيب ماذا لو كانت C#؟

هل ستنظر إليها نفس النظرة؟

مع أنهما تقريبا لغة واحدة فالفروقات بينهما قليلة والكثير جدا جدا ممن يستخدمون الفيجوال بيسيك يستطيعون استخدام C# بكل سهولة وقلما تجد مبرمجا يبرمج بالفيجوال بيسيك ولا يستطيع البرمجة بالسى شارب

الامر لا ينظر له من هذه الناحية

فاذا نظرنا مثلا الى كلام الاخ الشمري ستجد مضمون كلامه عن عيوب كل مبرمج من وجهة النظر العامة او يمكن ان تكون وجهة نظر البعض ومنهم الاخ الشمري

فمثلا كما قالها الاخ الشمري فان تفكير مبرمجي الفيجول بيسك او المعظم تقريبا يقتصر على مدي معرفتهم باللغة وكيفية استخدام GUI الخاص بها وهذا قد يكون جيدا فى بعض الاحيان

اذا ان فى هذا المثال فان افضل المبرمجين فى هذه الحالة سيكون سى بلس (قد انحاز لهم قليلا )

لكن ستجد عيب قاتل وهو GUI ليس متواجد اذا فى الوضع الحالي COMMAND-LINE راح زمان استخدامه الشائع اللهم الا اذا كان تطبيقك تابع للانظمة او موجه بشكل مباشر فى فئة مبرمجي الحاسب وخبراؤه

أما انا فأعرف اناس يخافون من الشاشة النصية للحاسب عند رؤيتها لانهم يعتقدون أنهم خربوا الجهاز

:lol: :lol: :lol: :lol:

فكما قالها الاخ عبد الله

الامور لن تمشي بلغات البرمجة وهذه العصبية فعلي المبرمج ان يكون ثقافة عامة فى التقنية بشكل عام وليس فقط علوم الحاسب (واحيانا يحتاج اى انسان يعمل الى ثقافة حياتية فى عدة مجالات)

واظن ان هذا هو هدف الموضوع الاول

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هي المشكلة ليست أن المبرمج " لا يفهم " ، فمبرمجي VB ( بدون تعميم ) ، إذا بدأ يبرمج ، سيبدأ من View و يكمل إلى أن ينتهي من برنامجه ، مع بعض الأدوات الجاهزة هنا وهناك ، لذلك هي ليست مشكلة في VB وليست مشكلة في المبرمج ( قد يكون مؤلف كتاب في VB ) ، لكن هو اعتاد أن يقسم برنامجه على " Forms " ، و يشبّك بينها .. وبالتالي صارت هذه النقطة هي أوليات بالنسبة له .. لم أواجه مبرمج VB يستخدم Command-line إلا نادراً . بينما مبرمجي C# ستجدهم يميلون إلى التفكير بطريقة صحيحة أكثر . php كذلك ، استخدام المصفوفات لحل كل شيء خطأ .. ولكن هذا المطبق وستشاهد هذا حتى في Frameworks.

كلها بسبب " الثقافة التي قدمتها لغات البرمجة لمستخدميها " .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالفعل نقاش ممتع وصائب

ولكن السؤوال هنا

هل يوجد مبرمج يستطيع البرمجه في اكثر من لغة ؟؟

واذا اردت هذا الشي كم يحتاج لي من الوقت ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كلامك في نوع من صحة بخصوص php و المصفوفات D:

هذه كلاس unit test لفرام وورك مشهور

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 5.1.6 or newer
*
* @package CodeIgniter
* @author ExpressionEngine Dev Team
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
* @license http://codeigniter.com/user_guide/license.html
* @link http://codeigniter.com
* @since Version 1.3.1
* @filesource
*/

// ------------------------------------------------------------------------

/**
* Unit Testing Class
*
* Simple testing class
*
* @package CodeIgniter
* @subpackage Libraries
* @category UnitTesting
* @author ExpressionEngine Dev Team
* @link http://codeigniter.com/user_guide/libraries/uri.html
*/
class CI_Unit_test {

var $active = TRUE;
var $results = array();
var $strict = FALSE;
var $_template = NULL;
var $_template_rows = NULL;
var $_test_items_visible = array();

public function __construct()
{
// These are the default items visible when a test is run.
$this->_test_items_visible = array (
'test_name',
'test_datatype',
'res_datatype',
'result',
'file',
'line',
'notes'
);

log_message('debug', "Unit Testing Class Initialized");
}

// --------------------------------------------------------------------

/**
* Run the tests
*
* Runs the supplied tests
*
* @access public
* @param array
* @return void
*/
function set_test_items($items = array())
{
if ( ! empty($items) AND is_array($items))
{
$this->_test_items_visible = $items;
}
}

// --------------------------------------------------------------------

/**
* Run the tests
*
* Runs the supplied tests
*
* @access public
* @param mixed
* @param mixed
* @param string
* @return string
*/
function run($test, $expected = TRUE, $test_name = 'undefined', $notes = '')
{
if ($this->active == FALSE)
{
return FALSE;
}

if (in_array($expected, array('is_object', 'is_string', 'is_bool', 'is_true', 'is_false', 'is_int', 'is_numeric', 'is_float', 'is_double', 'is_array', 'is_null'), TRUE))
{
$expected = str_replace('is_float', 'is_double', $expected);
$result = ($expected($test)) ? TRUE : FALSE;
$extype = str_replace(array('true', 'false'), 'bool', str_replace('is_', '', $expected));
}
else
{
if ($this->strict == TRUE)
$result = ($test === $expected) ? TRUE : FALSE;
else
$result = ($test == $expected) ? TRUE : FALSE;

$extype = gettype($expected);
}

$back = $this->_backtrace();

$report[] = array (
'test_name' => $test_name,
'test_datatype' => gettype($test),
'res_datatype' => $extype,
'result' => ($result === TRUE) ? 'passed' : 'failed',
'file' => $back['file'],
'line' => $back['line'],
'notes' => $notes
);

$this->results[] = $report;

return($this->report($this->result($report)));
}

// --------------------------------------------------------------------

/**
* Generate a report
*
* Displays a table with the test data
*
* @access public
* @return string
*/
function report($result = array())
{
if (count($result) == 0)
{
$result = $this->result();
}

$CI =& get_instance();
$CI->load->language('unit_test');

$this->_parse_template();

$r = '';
foreach ($result as $res)
{
$table = '';

foreach ($res as $key => $val)
{
if ($key == $CI->lang->line('ut_result'))
{
if ($val == $CI->lang->line('ut_passed'))
{
$val = '<span style="color: #0C0;">'.$val.'</span>';
}
elseif ($val == $CI->lang->line('ut_failed'))
{
$val = '<span style="color: #C00;">'.$val.'</span>';
}
}

$temp = $this->_template_rows;
$temp = str_replace('{item}', $key, $temp);
$temp = str_replace('{result}', $val, $temp);
$table .= $temp;
}

$r .= str_replace('{rows}', $table, $this->_template);
}

return $r;
}

// --------------------------------------------------------------------

/**
* Use strict comparison
*
* Causes the evaluation to use === rather than ==
*
* @access public
* @param bool
* @return null
*/
function use_strict($state = TRUE)
{
$this->strict = ($state == FALSE) ? FALSE : TRUE;
}

// --------------------------------------------------------------------

/**
* Make Unit testing active
*
* Enables/disables unit testing
*
* @access public
* @param bool
* @return null
*/
function active($state = TRUE)
{
$this->active = ($state == FALSE) ? FALSE : TRUE;
}

// --------------------------------------------------------------------

/**
* Result Array
*
* Returns the raw result data
*
* @access public
* @return array
*/
function result($results = array())
{
$CI =& get_instance();
$CI->load->language('unit_test');

if (count($results) == 0)
{
$results = $this->results;
}

$retval = array();
foreach ($results as $result)
{
$temp = array();
foreach ($result as $key => $val)
{
if ( ! in_array($key, $this->_test_items_visible))
{
continue;
}

if (is_array($val))
{
foreach ($val as $k => $v)
{
if (FALSE !== ($line = $CI->lang->line(strtolower('ut_'.$v))))
{
$v = $line;
}
$temp[$CI->lang->line('ut_'.$k)] = $v;
}
}
else
{
if (FALSE !== ($line = $CI->lang->line(strtolower('ut_'.$val))))
{
$val = $line;
}
$temp[$CI->lang->line('ut_'.$key)] = $val;
}
}

$retval[] = $temp;
}

return $retval;
}

// --------------------------------------------------------------------

/**
* Set the template
*
* This lets us set the template to be used to display results
*
* @access public
* @param string
* @return void
*/
function set_template($template)
{
$this->_template = $template;
}

// --------------------------------------------------------------------

/**
* Generate a backtrace
*
* This lets us show file names and line numbers
*
* @access private
* @return array
*/
function _backtrace()
{
if (function_exists('debug_backtrace'))
{
$back = debug_backtrace();

$file = ( ! isset($back['1']['file'])) ? '' : $back['1']['file'];
$line = ( ! isset($back['1']['line'])) ? '' : $back['1']['line'];

return array('file' => $file, 'line' => $line);
}
return array('file' => 'Unknown', 'line' => 'Unknown');
}

// --------------------------------------------------------------------

/**
* Get Default Template
*
* @access private
* @return string
*/
function _default_template()
{
$this->_template = "\n".'<table style="width:100%; font-size:small; margin:10px 0; border-collapse:collapse; border:1px solid #CCC;">';
$this->_template .= '{rows}';
$this->_template .= "\n".'</table>';

$this->_template_rows = "\n\t".'<tr>';
$this->_template_rows .= "\n\t\t".'<th style="text-align: left; border-bottom:1px solid #CCC;">{item}</th>';
$this->_template_rows .= "\n\t\t".'<td style="border-bottom:1px solid #CCC;">{result}</td>';
$this->_template_rows .= "\n\t".'</tr>';
}

// --------------------------------------------------------------------

/**
* Parse Template
*
* Harvests the data within the template {pseudo-variables}
*
* @access private
* @return void
*/
function _parse_template()
{
if ( ! is_null($this->_template_rows))
{
return;
}

if (is_null($this->_template))
{
$this->_default_template();
return;
}

if ( ! preg_match("/\{rows\}(.*?)\{\/rows\}/si", $this->_template, $match))
{
$this->_default_template();
return;
}

$this->_template_rows = $match['1'];
$this->_template = str_replace($match['0'], '{rows}', $this->_template);
}

}
// END Unit_test Class

/**
* Helper functions to test boolean true/false
*
*
* @access private
* @return bool
*/
function is_true($test)
{
return (is_bool($test) AND $test === TRUE) ? TRUE : FALSE;
}
function is_false($test)
{
return (is_bool($test) AND $test === FALSE) ? TRUE : FALSE;
}


/* End of file Unit_test.php */
/* Location: ./system/libraries/Unit_test.php */

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
مبرمج Visual Basic :

هذا لا أطيقه ولا أطيق العمل معه ( معلش :-) ) ، بينما نحن نتشاور حول حل المشكلة تتفاجأ باقتراحاته :

- إنشاء TextBox في Form .

- ربط Form مع Form .

- استخدام الأداة Sql للاتصال بقاعدة البيانات عن طريق Wizard .

هو يعرف كل شيء عن اللغة .. ولكن عقله الباطن لا يتحدث إلا عن GUI ، و لا يفكر إلا في هذا .. لذلك العمل معه صعب جداً .

كأنه هذا الشي يشبهني بس ب c# .... لكن لما يتحدث عن GUI القصد منه إنه يعرف كيف حيكون شكل البرنامج...وليس الإنشغال ب GUI لذاتها...

لما كنت أعمل request.querystring..... في الصفحة اللي بعدها لازم أحط textbox وأحط القيمة فيها....المشرفة تسألني ليه أقولها عشان أشوف إنه فعلاً أخذ القيمة.... تقولي ذكااااااء....قصدها العكس :sleep: ...

الخلاصة :

المبرمج الذي لا يتعلم " علوم الحاسب كمفهوم عام و شامل " ، بينما يركز على تعلّم " لغة برمجية بأدواتها فقط " ، فإنه في الغالب ستجده يستخدم الأدوات في المواقع الخطأ ، ليس لنقص في اللغة ولكن لنقص في إمكانيات المبرمج نفسه . وهي حوادث واقعية عشتها مع بعض الزملاء ،

شكراً على الخلاصة المفيدة وجزاك الله خيراً موضوع رائع ..

تم تعديل بواسطه -الأمل-
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
إذا بدأ يبرمج ، سيبدأ من View و يكمل إلى أن ينتهي من برنامجه ، مع بعض الأدوات الجاهزة هنا وهناك

على فكرة يا عبدالله الفكرة دى غلط تماما

لما أى مبرمج يبدأ فى مشروع جديد بأى لغة هيبدأ يخطط للمشروع ويختار الأدوات المناسبة ويبدأ يبنى مكتبات المشروع وبعدين فى النهاية يبدأ يبنى الواجهة

يمكن كلامك فعلا صحيح مع مبرمجى الفيبى فى بداية الطريق فقط من شدة ملله من الكونسول (لأن كل الكتب تقريبا تبدأ الشرح باستخدامه) يصاب بنهم نحو الواجهات عامل زى اللى تايه فى الصحراء لمدة أسبوع مثلا من غير أكل ولا شرب وفجأة وجد أمامه خروف مشوى :D ومحل عصير (مش عارف ازاى بس اهى حصلت وخلاص :lol: ) بالطبع مش هيسيبه

يعنى هو بيكون داخل مجال البرمجة عايز يعمل مايكروسوفت أوفيس من أول يوم لكن بعد كده لما يعرف إن كل حاجة ليها أصول يبدأ يتعلم المبادئ الصحيحة ويبدأ يركن موضوع الواجهات ده على جنب ويفكر فى التصميم الصحيح للبرنامج والبقية تأتى

ياريت بأه يامعلم تشيل الفكرة دى من دماغك وإلا...post-52996-1243599601.gif

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
على فكرة يا عبدالله الفكرة دى غلط تماما

لما أى مبرمج يبدأ فى مشروع جديد بأى لغة هيبدأ يخطط للمشروع ويختار الأدوات المناسبة ويبدأ يبنى مكتبات المشروع وبعدين فى النهاية يبدأ يبنى الواجهة

صحيح أخي ، View هي مرحلة أخيرة ، وفي الغالب نستخدم View " كلام فاضي" ، للتجارب فقط .. حتى يقوم logic الخاص بالبرنامج ..

لكن اقتباسك للجملة جعلني أشعر أنك فهمتني أني أنصح بأن يبدأ حبيبي المبرمج بـالـ View وهذا خطأ طبعاً مثل ما تفضّلت ،بل العكس .

هل يوجد مبرمج يستطيع البرمجه في اكثر من لغة ؟؟

أنت ستحتاج يوماً ما للاجتماع مع مبرمج php و مبرمج Java لتطوير برنامج بلغة بايثون ، وكل مبرمج سينقل ثقافته معه ، وهنا ستحتاج لشخص رابع متخصص في Software Engineering فقط laugh.gif ، لتنظيم العمل بعيداً عن التعصب للاسلوب الخاطئ لأنك هكذا تعلمت .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
لكن اقتباسك للجملة جعلني أشعر أنك فهمتني أني أنصح بأن يبدأ حبيبي المبرمج بـالـ View وهذا خطأ طبعاً مثل ما تفضّلت ،بل العكس .

لا أنا لم أفهم ذلك فأنا أعلم ما تعنيه بكلامك لكنى قصدت أن أوضح لك أن الفكرة التى تكونت لديك عن مبرمجى الفيجوال بيسيك خاطئة نسبيا كما وضحت فى مشاركتى :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شمري،

انا مبرمج ++C قبل ان اكون مبرمج جافا ، ولكني اجد ان ++C مرات غير مصممة بشكل جيد it is very messy

صحيح ان جافا لاتدعم الprocedural paradigm ولكنها تدعم الOOP, Meta-programming كما ان مكتبات الجافا مصممة بعناية ودرست اخطاء اللغات التي قبلها

ولكن دعنا ننظر الى الprocdeural paradigm كثير من مبرمجين سي انتقلوا الى سي بلس بلس لاستخدام الكلاسات ليس لانهم احبوا البرمجة الكائنية وانما ليستخدموا البرمجة الكائنية لترتيب دوالهم

ومكتباتهم

فبنظري


a.func(x);

اكثر ترتيبا من


func(&a,x);

سوف تجد ان الAPI الخاص بالجافا مصمم مع اخذ الdesign patterns بعين الاعتبار مما يجعلها سهلة and more reusable

اذا لم تكن ثقافة ان كل شيئ Object جيدة

فلماذا نجد ميكروسوفت تقلد جافا في سي شارب بجعل كل شيئ يرث من Object? بل ان ميكروسوفت نقلت هذه الفكرة الى ++Visual C فنجدها مطبقة في كل من MFC و

C++/CLI

الجافا برأيي ماهي الى تصحيح لاسلوب السي بلس بلس في البرمجة ولو اني اعتب عليها مسألة الVM

واتفق معك في ان مبرمج الفيجوال بايسك يحتل المرتبة الاخيرة بين المبرمجين (قد لا يكون رايك انه يحتل المرتبة الاخيرة ولكنه هكذا بنظري)

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مبرمج الاسمبلي :

سيقوم بكتابة البرنامج بدون Output ولكن سيتم عرض الناتج كـDebug Strings يتم عرضها في الـDebugger وعليك استخدام أحد الـDebuggers لرؤية الـOutput laugh.gif

5

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

باعتبر الاساليب البرمجية مثل الملح فى الطعام.كثرتها او قلتها فية قد تفسد طعمة.

لذلك عندما اريد اختيار اداء لعمل شى افكر فى الاقل امكانيات ثم التى تليها فى الامكانيات. استخدام ادوات بامكانيات كبيرة لاستخدامات بسيطة يصيبنى بالقلق من حدوث overhead فى التعامل و اشعر انها شوهت من تعبير الفكرة.ولا اشعر بالندم على الادوات المبهرة فى اللغة .

if you don't use it , you don't pay for it

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
صحيح ان جافا لاتدعم الprocedural paradigm ولكنها تدعم الOOP, Meta-programming كما ان مكتبات الجافا مصممة بعناية ودرست اخطاء اللغات التي قبلها

إن اردت استخدم STL أو QT

فلماذا نجد ميكروسوفت تقلد جافا في سي شارب بجعل كل شيئ يرث من Object? بل ان ميكروسوفت نقلت هذه الفكرة الى ++Visual C فنجدها مطبقة في كل من MFC و C++/CLI

لغة #c و c++/cli موجهين لـ CLI و التى في المعايير الخاصه بها تضع شروط لكل صانعي المترجمات تكون كل الفئات وارثه من الفئه object، بالنسبه لـ MFC فيوجد عدة اسباب لوجود الفئه Object منها Serializatrion و Memory management و لكن فى امكانك عدم الوراثه من CObject.

الجافا برأيي ماهي الى تصحيح لاسلوب السي بلس بلس في البرمجة ولو اني اعتب عليها مسألة الVM

أخي ++c هى multi-paradigm language و هذه من احد خصائصها دعم procdeural و كذلك OOP، لا يوجد أى شئ لا تستطيع عمله فى ++c و لكن يوجد فى الجافا، فالـ ++C ترسم لك الطريق و تتركك لتمشى فيه كما تريد و انت المسؤل أما الجافا فتجبرك على اتجاه معين و هذا يقلل من إحتمالات الحلول و ايضا من الأخطاء.

الـ VM هي نقطة قوه فى الجافا و بدونها لم تكن الجافا لتعرف، هل نسيت write once run everywhere.

و الله ولي التوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رغم أنني محب للغة VB إلا أنه على أن أعترف أن عبدالله محق. هناك عدد هائل من مبرمجي VB (بالذات VB6 وأخواتها) يفكرون بطريقة بناء الـGUI أولاً. مفهوم الـn-Tier شئ جديد بالنسبة لهم.

ولأضيف إلى الموضوع:

مبرمجوا الـCOBOL تفكيرهم يدور على كيفية تسمية المتغيرات والجداول بحيث لا يزيد طول الإسم عن 8 حروف :lol:

تم تعديل بواسطه System Down
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

اخوتي لما الاجحاف على مبرمجي الفيجوال بيسك؟!! لي قرابة العشر سنوات وان شغال على البيسك ومن ثم الفيجول بيسك وفي النهاية الفيجوال بيسك دوت نت, والكثير يحكي ان الفيجول لغة البنات والي اخره من السخافات!! اريد ان اوضح امرا ليس كل المبرمجين بهذه اللغه يبدأوا بالواجهات ولكن يمكنك هذا المعتاد عن البعض وخصوصا مجتمعنا العربي, فلا يحق الحكم على مبرمجي اللغة اذا رأينا بعض المبرمجين يفكروا بهذا المنظور .. طبعا بالنسبه لي لا اهتم كثير بالواجهات بل بالعكس احب البرمجة تحت محرر الاوامر Console وقد عملت العديد من التطبيقات ابرزها قاعدة بيانات كانت واجهتها الاساسيه Console ومن ثم قمت بتطويرها لواجهات تشتغل على الويندوز و اللينكس .. واغلب البرامج التي ابنيها استخدم مفهوم ال n-tiers وان شاء الله لي مقال قريب سأحاول وضعه اذا وجدت الوقت المناسب, لذا اريد ان اقول ان الواجهات والادوات الموفره ما هي الا مساعدة للمبرمج وتصب في غرض واحد وهو ال Productivity & Reusability لذا انصح جميع المبرمجي وخصوصا مبرمجي الفيجول بيسك ان لا يفكروا في الواجات فقط بل يفكروا في البرنامج ككل DataAccess, Business Logic وكذلك ال Presentation ويتسخدموا الادوات والتقنيات المتاحه لبناء برامج Robust

وفي الختام اردت ان اقول للأخ عبدالله ليس كل مبرمجي الفيجول عقله الباطن هو GUI, يمكن يكون ما شاهدته من زملاء لك مثلا, واريد ان اقولك مرارا وتكررا ليس العيب في اللغة ربما يكون العيب في المبرمج نفسه!!

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مهلك يا VBHelper. أنا أيضاً مبرمج VB بالأساس، وثلاث أرباع مواضيعي في المنتدى هي دفاع عن الـVB. :lol:

نحن لم نقل كل. ولا حتى معظم. ولكن هناك بالفعل فئة بهذا الشكل. بالذات مبرمجي VB6.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

اخي ولماذا الفئه فقط في مبرمجي الفيجوال بيسك؟!! برضه موجوده في مبرمجي السي شارب والعديد من اللغات .. فحسب ما ذكر سابقا المشكله في المبرمج وليس في اللغة!!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
وفي الختام اردت ان اقول للأخ عبدالله ليس كل مبرمجي الفيجول عقله الباطن هو GUI, يمكن يكون ما شاهدته من زملاء لك مثلا, واريد ان اقولك مرارا وتكررا ليس العيب في اللغة ربما يكون العيب في المبرمج نفسه!!

أخي ، ذكرت هذا :

فإنه في الغالب ستجده يستخدم الأدوات في المواقع الخطأ ، ليس لنقص في اللغة ولكن لنقص في إمكانيات المبرمج نفسه . وهي حوادث واقعية عشتها مع بعض الزملاء ،

معظم مبرمجي php يكثرون من استخدام المصفوفات بدون داعي .. و معظم مبرمجي فيجوال بيسك يهتمون بالواجهات بلا داعي ، بينما معظم مبرمجي Cpp يهملون شيء اسمه GUI وهذا خطأ أيضاً، ليس لأنهم لا يعرفون غير هذا ، وليس لأن اللغة لا تقدم إلا هذا ، ولكن هي عادة تكتسبها بدون أن تشعر ، لا يوجد " استهزاء بهم " ، بقدر ماهو واقع أشاهده يومياً .

الموضوع ليس موضوع حرب لغات رجاءً :-( ، يعني الموضوع " حبّي بالدرجة الأولى " ولا يستنقص من أحد .. :)

@mental-driller : لا أخفيك أني متأثر " بأسلوب جافا " ، حتى النخاع ، لكن لا يمكن نقل نفس الفكر إلى لغات أخرى ، ( إلى لغة Cpp مثلاً ) ،

مبرمج الاسمبلي :سيقوم بكتابة البرنامج بدون Output ولكن سيتم عرض الناتج كـDebug Strings يتم عرضها في الـDebugger وعليك استخدام أحد الـDebuggers لرؤية الـOutput
مبرمجوا الـCOBOL تفكيرهم يدور على كيفية تسمية المتغيرات والجداول بحيث لا يزيد طول الإسم عن 8 حروف

:P

أعتقد آخر مبرمج Cobol انقرض في بداية الألفية ، بينما آخر مبرمج أسمبلي رأيته على الطبيعة قبل 4 سنوات .. :D ، لذلك المعلومة جديدة ..

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
واتفق معك في ان مبرمج الفيجوال بايسك يحتل المرتبة الاخيرة بين المبرمجين (قد لا يكون رايك انه يحتل المرتبة الاخيرة ولكنه هكذا بنظري)

خلاص تركنا لكم المركز الأول للتنافسوا عليه

لماذا أشعر أنكم تصورون مبرمجى الفيجوال بيسيك على أنهم أغبى المبرمجين ؟!!

سؤال آخر ,, ماهو المركز الذى يحتله مبرمجو السى شارب ربما أضم نفسى لهم حتى أنتشل نفسى من قاع الترتيب الذى تفضلتم به ؟!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ،

الخلاصة :

المبرمج الذي لا يتعلم " علوم الحاسب كمفهوم عام و شامل " ، بينما يركز على تعلّم " لغة برمجية بأدواتها فقط " ، فإنه في الغالب ستجده يستخدم الأدوات في المواقع الخطأ ، ليس لنقص في اللغة ولكن لنقص في إمكانيات المبرمج نفسه . وهي حوادث واقعية عشتها مع بعض الزملاء ،

السلام عليكم

وهل هناك مبرمج بالمعنى ويُطلق عليه هذا المُسمى بأمانة بدون ان يكون لديه مفهوم عام وشامل(ع الأقل) لعلوم الحاسب؟

مجرد استفسار wub.gif

تاني شغلة الإلمام باللغة "س" واستعمال مكوناتها بشكل صحيح ونموذجي هي المعيار الحقيقي لمهارة البرمجة لدى هذا المبرمج

إن كان مبرمجاً حقيقاً او مجرد دارس وفي طريقه

كالكاتب للمقالات

كاتب ممتاز واسلوب احترافي

وكاتب ضعيف واسلوب غير مقبول

بالنسبة لي ليس هناك مبرمج حقيقي ليس لديه من هندسة البرمجيات ومفاهيما واساليبها وملحقاتها ما يكفي ومن ضمنها تلك المجموعة الجزئية (علوم الحاسب)...

شكراً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

اخي ولماذا الفئه فقط في مبرمجي الفيجوال بيسك؟!! برضه موجوده في مبرمجي السي شارب والعديد من اللغات .. فحسب ما ذكر سابقا المشكله في المبرمج وليس في اللغة!!

السبب ليس في طبيبعة اللغة بل هو إرث تاريخي. عندما انفجرت شعبية استخدام الـVB (ما قبل دوت نت) أدى هذا أن العديد من المبرمجين القليلي الخبرة انتقلوا فوراً إليها. هذا غير خريجي دورات الأسبوعين. وأصبح هناك شبه كساد في السوق، وأصبح التجار يبحثون عن الرخيص. وهذا طبعاً أدى إلى اتخاذ أسوأ أنواع البرمجة من قبل العديد. وعندما ظهرت VB.NET انتقلوا إليها (هذا إذا انتقلوا أصلاً) بنفس طريقة التفكير. الوضع أفضل نسبياً الآن (بسبب حملات التوعية من قبل مايكروسوفت على ما أعتقد) ولكنها تبقى مشكلة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

خلاص تركنا لكم المركز الأول للتنافسوا عليه

لماذا أشعر أنكم تصورون مبرمجى الفيجوال بيسيك على أنهم أغبى المبرمجين ؟!!

سؤال آخر ,, ماهو المركز الذى يحتله مبرمجو السى شارب ربما أضم نفسى لهم حتى أنتشل نفسى من قاع الترتيب الذى تفضلتم به ؟!

لا اقصد بمبمرمج الفيجوال بيسك الاشخاص الذين يبرمجون بفيجوال بيسك عموما وانما الاشخاص الذين يبدأون البرمجة بفيجوال بيسك وترتكز اساليبهم البرمجية عليها

في الحقيقه ان ارى ان فيجوال بيسك جيده من ناحية RAD لتوفير الوقت ولكن ليس دائما كما انها تقنية محتكرة على ميكروسوفت

بالنسبة للسي شارب لا ارى ان مبرمجيها سوف يكونون بعيدا عن مبرمجين فيجوال بيسك اذا كانوا من المتأثرين بثقافة الwindows forms

ولكن الكثير من مبرمجين سي شارب هم مبرمجين بالجافا وبلغات اخرى ايضا لذا الكثير منهم ياتون الى سي شارب و معهم الكثير من المفاهيم مسبقا

ميكروسوفت ارادت ان توفر على المبرمجين الوقت باستخدام فيجوال بيسك ولكنها ايضا قامت بتغيب الكثير من المفاهيم في الطريق لذا فهو سلاح ذو حدين

أخي ++c هى multi-paradigm language و هذه من احد خصائصها دعم procdeural و كذلك OOP، لا يوجد أى شئ لا تستطيع عمله فى ++c و لكن يوجد فى الجافا، فالـ ++C ترسم لك الطريق و تتركك لتمشى فيه كما تريد و انت المسؤل أما الجافا فتجبرك على اتجاه معين و هذا يقلل من إحتمالات الحلول و ايضا من الأخطاء.

الـ VM هي نقطة قوه فى الجافا و بدونها لم تكن الجافا لتعرف، هل نسيت write once run everywhere.

ماهي المشكلة هي انها تترك الطريق مفتوح ، مثلا وجود الدوال من نوع friend يفتح الطريق لاكواد سيئة كان يمكن كتابتها بطرق اخرى.

فيما يخص الSTL مثلا انت تستخدم ال<algorithms> علشان تتطبق دوال على الcollections بس في الجافا ممكن تستدعيها على شكل دوال static من داخل كلاسcollections من ما يعطيها شكل منظم اكثر

الVM تكسر راسي بصراحة لانها تجعل الجافا بطيئة ولاتناسب الكثير من التطبيقات خاصة hardware وكان حلمي لو ان في طريقة تكون اسرع من كذا

ليس بالضرورة وجود الVM فمكتبة QT هي cross platform بس لا تستخدم الVM

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
الخلاصة :

المبرمج الذي لا يتعلم " علوم الحاسب كمفهوم عام و شامل " ، بينما يركز على تعلّم " لغة برمجية بأدواتها فقط " ، فإنه في الغالب ستجده يستخدم الأدوات في المواقع الخطأ ، ليس لنقص في اللغة ولكن لنقص في إمكانيات المبرمج نفسه . وهي حوادث واقعية عشتها مع بعض الزملاء ،

من الممكن ان تكون اللغة في بعض الاحيان لتطبيق نظرية او خوارزمية معينة

لذلك هي مجرد وسيلة لاثبات صحة قانون او طريقة توصل اليها باحث

لذلك فكل الوسائل هنا مشروعة ..

اما بالنسبة للكيفية .. ممكن ان يكون باستخدام الواجهات ممكن ان يكون بالمتغيرات بالمصفوفات

فهنالك العديد من الطرق واللغات . ولولا هذا التعددد لما برزت الكثير من الافكار

لذلك لا يمكن ان نفرق مبرمج عن مبرمج اخر الا بامكانياته

وانا معك من ناحية تعلم الحاسب كمفهوم شامل .. لان اي شخص يتعامل مع اي لغة برمجة حتى لو كانت لغة LOGO .. يجب ان يكون ملما بما يتعامل معه من مفاهيم Compilers بصورة عامة وما خفي عنه في OS الخاص به ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .